成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么我用Go寫機器學習部署平臺,而偏偏不用Python?

新聞 機器學習
雖然在機器學習中,Python已經無孔不入。但Python并不是全能之神手中的魔杖可以為所欲為。

 ä¸ºä»€ä¹ˆæˆ‘用Go写机器学习部署平台,而偏偏不用Python?

雖然在機器學習中,Python已經無孔不入。但Python并不是全能之神手中的魔杖可以為所欲為。很多情況下其實用Python的效果并不如其他語言,比如Go更好,甚至可能更糟。本文介紹了為什么在作者的工作環境下選擇Go而非Python的理由,引發社區關注和熱議。

編程語言就是一個江湖,永遠有人覬覦霸主的位子。

 

Python如今卻穩坐編程語言界的霸主,尤其是在機器學習領域,所有主流機器學習框架都在用Python。

 

然而即使是被絕大多數人認可的Python,也并非真的無所不能,也有讓其無能為力、無中生有的情況。

 

Python引以為豪的機器學習算法,只是機器學習系統的一個組成部分。要實際大規模運行生產機器學習API,還需要實現以下功能的基礎架構:

 

自動縮放,以便流量波動不會破壞您的APIAPI管理,以處理的API部署滾動更新,以便您可以在更新模型的同時仍為用戶提供服務

 

對于像Cortex這樣的開源機器學習部署平臺,旨在使所有這些基礎架構自動化,以及日志記錄和成本優化等其他方面的關注,作者Caleb Kaiser認為相比Python而言,Go更合。

 

相比于出身寒門、一個應屆生的圣誕節無聊之作的Python,Go語言出自Google,作者是三位宗師級人物:Rob Pike、Ken Thompson 和 Robert Griesemer。在以下方面超越了Python:

 

并發對于機器學習基礎架構至關重要

用戶可以將許多不同的模型部署為不同的API,所有模型都在同一個Cortex集群中進行管理。

 

為了讓Cortex Operator能夠管理這些不同的部署,需要糾纏一些不同的API。

 

Cortex調用Kubernetes API在集群上部署模型;同時也需要考慮各種AWS API(EC2 Auto Scaling,S3,CloudWatch等)

 

用戶不會直接與任何這些API進行交互,取而代之的是,Cortex以編程方式調用這些API來供應集群,啟動部署和監視API。

 

以一種有效,可靠的方式進行所有這些重疊的API調用是一個挑戰。

 

同時處理它們是最有效的處理方式,但同時也引入了復雜性,因為現在我們不得不擔心諸如競賽條件之類的事情.Go有一個優雅的,開箱即用的解決方案來解決這個問題:Goroutines。

 

Goroutines是正常的Go并發執行的功能。許多Goroutine可以放在一個OS線程上,如果Goroutine阻塞了OS線程,則Go運行時會自動將其余Goroutines移至新的OS線程。

 

Goroutines還提供了一個稱為“通道”的功能,允許Goroutines執行在彼此之間傳遞消息,使我們能夠調度請求并避免出現競爭情況。

 

使用asyncio等最新工具在Python中實現所有這些功能可能是可行的,但是Go的設計充分考慮了這種用例,這一事實使我們的生活變得更加輕松。

 

在Go中構建跨平臺CLI更容易

Cortex CLI是一種跨平臺工具,允許用戶直接從命令行部署模型和管理API。

 

下面的GIF顯示了正在使用的CLI:

事實證明,Python編寫的CLI嘗試在各種平臺之間分發太困難了。

 

因為Go可以編譯成一個二進制文件(不需要依賴管理),所以它為我們提供了一個在平臺之間分發CLI的簡單解決方案,而無需進行過多的工程工作。經過編譯的Go二進制文件和解釋型語言的性能優勢也很明顯。

 

根據計算機基準測試游戲,Go的運行速度比Python快得多。許多其他基礎結構CLI工具都是用Go編寫的,這并非巧合,這使我們進入了下一步。

 

Go生態系統非常適合基礎設施項目

開源的好處之一是,您可以從自己欣賞的項目中學習。 例如,Cortex存在于Kubernetes(本身用Go編寫)生態系統中。 我們很幸運能夠在該生態系統中學習到許多出色的開源項目,其中包括:

 

  • kubectl:Kubernetes的CLI
  • minikube:一種在本地運行Kubernetes的工具
  • helm:Kubernetes程序包經理
  • kops:用于管理生產Kubernetes的工具
  • eksctl:Amazon EKS的官方CLI

 

以上所有內容都是用Go語言編寫的,而不僅僅是Kubernetes項目。

 

無論你是在看CockroachDB還是Hashicorp的基礎設施項目,包括Vault,Nomad,Terraform,Consul和Packer,它們都是用Go編寫的。

 

Go在基礎設施領域的流行還有另一個影響,這就是大多數工程師都感興趣!在基礎架構方面工作的人對Go很熟悉,這使得吸引工程師更加容易。

 

用Go是一種樂趣

相對于Python,Go入門起來有點痛苦,但這是指暫時的。一旦你跨越了門檻,進入Go的世界里,你會發現簡直是“一馬平川”。

 

Go寬容的性格使它對于大型項目而言如此令人愉悅。

 

除此以外,相比Python,Go的優勢還體現在:

 

  • 擁有非常棒的編譯器,編譯器可以檢測出你犯的所有低級錯誤
  • 更好的并行性。Go 語言就是為并行而生的
  • 部署簡單。代碼所需要的所有依賴都在一個二進制文件里
  • 風格一致。格式化工具會讓所有代碼風格都保持一致
  • 更便捷的工具。一個編輯器+插件滿足幾乎所有需求,都不需要IDE

 

適用于機器學習的Python,適用于基礎架構的Go

Cortex服務于TensorFlow,PyTorch,scikit-learn和其他Python模型,這意味著與這些模型的接口以及推理前后的處理,用Python完成。

 

但是,即使將Python代碼打包到了Docker容器中,這些容器都是用Go語言編寫的代碼精心編排的。如果你有興趣成為一名機器學習工程師,那么了解Python是必須的。

 

但是,如果你對使用機器學習基礎結構感興趣,則應認真考慮使用Go。

 

 

責任編輯:張燕妮 來源: 新智元
相關推薦

2020-02-14 13:13:04

Go機器學習Python

2020-02-14 15:22:58

編寫基礎架構Python

2023-03-30 14:10:30

2012-06-18 14:51:09

Python

2019-04-19 11:56:48

框架AI開發

2023-07-10 10:23:30

2019-05-15 08:29:56

Web面板運維

2012-11-13 10:27:45

PythonGo編程語言

2012-05-18 10:21:30

程序員CC++

2020-05-11 09:00:57

Redis監控Zabbix

2020-06-16 09:17:33

ESRedis監控

2012-10-10 16:52:21

CentOSDebianUbuntu

2021-04-06 15:38:01

手機國產蘋果

2016-01-12 16:58:31

C游戲

2019-03-11 08:36:11

Python代碼Flask

2021-12-30 19:36:48

GoDubboJava

2022-01-07 14:05:33

DubboGoJava

2017-09-11 19:58:06

PostgreSQLMySQL數據庫

2020-09-25 08:10:55

Rust系統編程

2019-11-18 09:56:48

谷歌Go語言開發者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一本在线 | 岛国精品 | 日韩一区二区在线视频 | 国产精品中文 | 亚洲国产精品一区二区三区 | www国产成人免费观看视频,深夜成人网 | 91精品久久久 | 九九九久久国产免费 | 天久久| 久久久91精品国产一区二区精品 | 日本午夜免费福利视频 | 免费国产视频 | 精品国产一区一区二区三亚瑟 | 农村妇女毛片精品久久久 | 91在线网站| 久久久精品综合 | 色综合99 | 欧美在线成人影院 | 青娱乐一区二区 | 精品一区二区三区在线视频 | 欧美黑人国产人伦爽爽爽 | 在线成人一区 | 亚洲网在线 | 成人精品鲁一区一区二区 | 国产在线成人 | 一级毛片免费 | 亚洲精品乱码久久久久久蜜桃 | 欧美成人在线免费 | 久草青青草| 国产一级一级 | 美女福利视频 | aa级毛片毛片免费观看久 | 亚洲欧美日韩精品久久亚洲区 | 日本二区 | 亚洲综合无码一区二区 | 国产在线www | 成人网av | 亚洲高清在线播放 | 日韩和的一区二在线 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 国家一级黄色片 |