【Python】机器学习基础架构方面,Go是比python更好的选择?
全文共1881字 , 预计学习时长7分钟
本文插图
图源:unsplash
毋庸置疑 , Python是如今最受欢迎的机器学习语言 。 虽然机器学习框架使用CUDA C / C ++之类的语言进行实际运算 , 但它们都提供了Python接口 。 这也是为什么大多数机器学习从业人员都工作中都使用Python 。
而机器学习基础设施——Cortex的代码库88.3%都是Go语言编写的 。
本文插图
图源:Cortex GitHub
大规模部署模型不同于编写调用PyTorch和TensorFlow函数的Python脚本 。 为了实际大规模运行生产机器学习API , 需要基础架构来执行以下操作:
· API管理 , 以处理多个部署进程 。
· 自动缩放 , 这样流量波动就不会破坏API(并且AWS保持可管理性) 。
· 滚动更新 , 以便更新模型的同时仍然服务于请求 。
我们构建了Cortex来提供此功能 , 并决定在Go语言中进行编写 , 有以下几个原因:
本文插图
1.基础设施社区已经接受了Go
我们是软件工程师而不是数据科学家 , 之所以加入机器学习 , 是因为想要构建Gmail的智能编写之类的功能 , 而不是因为对反向传播着迷 。
我们希望有一个简单的工具 , 能够采用经过训练的模型并自动实现所需的所有基础设施(例如可复制的部署 , 可扩展的请求处理 , 自动监视等) , 从而将其部署为API 。
尽管还不存在多合一的模型到微服务平台 , 但我们之前已经在普通软件中实现了所有这些功能 。 我们知道哪种工具最适合这份工作 , 以及用什么语言编写 。
构建Kubernetes , Docker和Terraform等工具的团队使用Go , 是因为它运行很快 , 可以很好地处理并发程序 。 它编译为单个二进制文件 。 选择Go风险相对较低 , 其他团队也在使用Go来解决类似的问题 。
此外 , 用Go编写可以使基础架构工程师(他们可能已经熟悉该语言)工作起来更容易 。
本文插图
2.在Go中构建跨平台的CLI更容易
我们希望CLI在Linux和Mac上均可使用 。 最初 , 我们尝试用Python进行编写 , 但是用户总是很难让它在不同的环境中工作 。 当在Go中重建CLI时 , 可以将其编译为单个二进制文件 , 可以在各个平台上发布 , 而无需做太多工程工作 。
编译后的Go二进制代码与解释型语言相比 , 其性能优势也很明显 。 根据计算机语言基准测试游戏 , Go运行得比Python快得多 。
因此用Go编写许多其他基础结构CLI(例如eksctl , kops和Helm客户端)也并非偶然 。
本文插图
3.Go解决了与并发和调度相关的问题
管理部署需要许多服务同时并准确地运行 。 幸运的是 , Goroutines , channels和Go的内置计时器和周期性计时器为并发和调度提供了一种巧妙的解决方案 。
在较高的层次上 , Goroutine是一个正常函数 , Go通过在虚拟的独立线程上执行来同时运行 。 多个Goroutine可以安装在单个OS线程上 。 channels允许Goroutine共享数据 , 而内置计时器和周期性计时器允许部署Goroutine 。
本文插图
图源:unsplash
我们在需要时使用Goroutines来实现并发(例如当Cortex需要将多个文件上传到S3 , 而且并行运行将节省时间) , 或使可能长时间运行的功能(例如CloudWatch的流日志)不会阻塞主线程 。
推荐阅读
- 小虔科技|华为和小米都曾经学习苹果3D面部识别,为啥现在不用了
- 机器人|深圳机器人产业产值1257亿元
- |《5G技术助力国产机器人完成全球首场骨科实时远程手术》公示材料
- 美军事进行时|五角大楼研制挖隧道的蚯蚓机器人为地面部队提供安全补给
- 砍柴网|讯飞智能学习机 618 新惊喜,多重优惠助力孩子暑假弯道超车
- 新智元|B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)
- cnBetaTB|看机器人如何制作出既有颜值又美味的蛋饼
- 山东伟豪思|袋料全自动拆垛机器人的使用给企业带来了哪些益处
- 语言最红语言Python跌落榜三,Rust最受喜爱!Stack Overflow 2020报告出炉
- 无人机这两项机器人发明,就是东京大学进军外卖界的野心!?
