当今高性能计算挑战性的问题之一是:大多数软件都设计为在单台计算机上运行,并且并行化可能会被限定于本地可用的计算机核心或线程数量。
想象一个应用程序在一台机器上通常运行需要1个小时……如果在一个全新环境中,您同时启动3600个 lambda函数,每个函数运行一秒,这样接近瞬时返回结果。
这是科幻小说吗?也许是开发商发烧的梦想?还是假新闻?
以上都不是。今天是现实。这段引文摘自Keith Winstein在斯坦福大学出色的研讨会上的摘录,他在其中详细介绍了计算的未来研究。
我们已经进入了无服务器超级计算机的时代。对于喜欢冒险的人,对在无服务器世界中的情况感到好奇,请继续阅读。
使用无服务器FAAS提供商的按需扩展,可以按需要让任意数量的worker中分散工作。这相当于召唤成千上万的线程,即时启动并行运行。
并行无服务器计算可以做哪些事情?
我很高兴你问!结果有很多:
- 软件编译
- 软件测试
- 图像和视频编码,分析,压缩
- 机器学习
- 数据可视化
- 基因组学
- 蒙特卡洛模拟
- 快速搜寻
- CI / CD
可以按分布式方式分块和分段处理的任何进程都适合于这种大规模并行运行时。
让我们探索一些大规模并行化工作的真实示例。
专案
- Excamera-视频编码,一种用于细粒度并行性的功能视频编解码器
- Lepton-JPEG重新压缩,功能性JPEG编解码器,用于边界遗忘分片
- Salsify-视频会议编解码器,以找到最佳编码率
- GG -thunk抽象以推断lambda表达式并在无服务器计算中求值
- CC-lambda
- Pywren-通过AWS Lambda大规模运行现有的python代码
- 无服务器火炮 -大规模性能测试
- lambci-基于AWS Lambda的持续集成系统
- 并行图像处理
GG框架
gg框架是一个开放源代码框架,可帮助开发人员在云函数服务上使用数千个并行线程执行应用程序,以实现接近交互的完成时间。
GG将较大的任务分解为中间表示形式,即与云无关的“ thunk”集合。然后通过有线将其发送到给定的云服务。
“目标是向交互式用户提供结果-比在用户自己的计算机上或通过引导冷群集实现的结果要快得多,并且比为偶尔执行的任务维护热群集要便宜。”
“ PyWren公开了Python API,并使用AWS Lambda函数进行线性代数和机器学习。无服务器MapReduce和Spark-on-Lambda演示了类似的方法。”
“ gg在启动时比Google Kubernetes Engine快45倍,比Lambda Spark快13倍”
LambCI
并行运行CI并快速进行️,项目链接
Nordstorm artillery
对任何规模的系统进行压力测试:项目链接
CC Lambda
在约3小时内处理35亿个网页或198TB的未压缩数据。项目链接
结论
我希望你能像我一样看到;利用无服务器计算作为未来的超级计算机有很多希望。
想象一下一个几乎所有事物都变得更快的世界。
可以减少海量数据科学作业的运行时间,以便科学家更快地模拟模型!搜索可以改善。软件编译和开发周期可以大大减少……您明白了。
想想可能性!
面临一些挑战:
- 使当前工具以真正的并行分布式方式运行
- 改进工具和DX,使所有人(不仅是Ops员工)都能采用这些方法
- 向人们介绍无服务器方法,以及托管云服务在当今的可能性