Pourquoi avons-nous écrire une architecture d'apprentissage de la machine avec Go, mais ne pas Python?

« Si vous êtes intéressé à devenir un ingénieur d'apprentissage machine, vous devez être familier avec Python-- Toutefois, si vous êtes intéressé dans les infrastructures, l'apprentissage machine, vous devriez envisager sérieusement d'aller. »

Auteur | Caleb Kaiser

Traducteur | ménisque, Zebian | Guo Rui

Ce qui suit est la traduction:

Aujourd'hui, la machine bien connue apprendre Python est le plus populaire dans la langue du projet. Bien que R, C ++ et d'autres langues, et Julia ont leurs partisans et de l'utilisation, mais Python est toujours la langue la plus couramment utilisée, presque tous cadre d'apprentissage de la machine grand public utilise Python.

Cependant, dans notre Cortex (pour les modèles d'apprentissage de la machine à déployer API plate-forme open source) base de code, 87,5% du code est Go.

Python fier de l'algorithme d'apprentissage automatique est juste une partie du système d'apprentissage de la machine de production. Si vous voulez exécuter la production à grande échelle de l'API d'apprentissage machine, votre infrastructure doit atteindre les fonctions suivantes:

  • mise à l'échelle automatique, assurez-vous des fluctuations de flux n'affectera pas l'API.

  • la gestion de l'API, le processus de déploiement de l'API de synchronisation.

  • Faire défiler mise à jour afin que le service ne sera pas interrompu lorsque les utilisateurs mettent à jour le modèle.

Nous avons construit Cortex est d'automatiser l'ensemble de l'infrastructure ci-dessus, ainsi que l'exploitation forestière et d'autres questions telles que l'optimisation des coûts.

Pour les raisons suivantes, nous croyons que Go est le choix idéal pour la construction de logiciels qui répondent à ces besoins.

En même temps crucial pour l'infrastructure Machine Learning

Les utilisateurs peuvent déployer de nombreux modèles différents en différentes API, et tous les modèles sont mis à gérer avec un cluster de Cortex. Cortex opérateur a besoin à travers une API pour gérer ces différents déploiement, tels que:

  • API Kubernetes, API Cortex appelle ce modèle de déploiement sur un cluster.

  • Divers API AWS, y compris EC2 Mise à l'échelle automatique, S3, CloudWatch, etc., Cortex appeler ces API pour gérer déployée sur AWS.

Les utilisateurs n'interagissent pas directement avec l'API. Cortex en appelant le programme API pour gérer le cluster, commencez à déployer et à l'API du moniteur.

D'une manière efficace et fiable pour traverser ces appels d'API est un problème. L'utilisation concomitante de ces appels d'API sont traités de la façon la plus efficace, mais il apporte aussi la complexité, parce que nous avons à vous soucier de l'état de la concurrence.

Sortez de la boîte pour fournir une solution à ce problème des solutions à utiliser: goroutines.

Go goroutines est une fonction d'une manière concurrente d'exécuter du code. Nous pouvons écrire une autre étude approfondie de l'article travail goroutines derrière, mais en règle générale, goroutines est géré automatiquement par les fils légers Go temps en cours d'exécution. Vous pouvez goroutine plusieurs systèmes d'exploitation sur un fil, et si goroutine bloqué fil OS, le moteur d'exécution Go se déplacera automatiquement sur le reste du fil nouveau système d'exploitation goroutines.

Goroutines fournit également une fonction appelée « canal » (canal), vous pouvez utiliser cette fonction pour transmettre des messages entre goroutines, demande de planification et nous aider à empêcher la concurrence.

Bien sûr, vous pouvez également profiter des derniers outils asyncio tels que ces fonctions en Python, mais Go est conçu pour tenir compte de ces circonstances, utilisez le Go peut réduire notre charge de travail.

Go construit en utilisant CLI multi-plateforme plus facile

Cortex CLI est un outil multi-plateforme, les utilisateurs peuvent utiliser cet outil directement à partir des modèles de déploiement de la ligne de commande et API de gestion.

Dans un premier temps, nous utilisons cette CLI écrit en Python, mais il est avéré trop difficile à distribuer le CLI sur plusieurs plates-formes. Étant donné que le Go peut être compilé dans un fichier binaire (ne pas besoin de compter sur la gestion), il est possible de fournir une solution simple pour nous aider à distribuer CLI entre les plates-formes sans nécessiter de travaux d'ingénierie supplémentaires.

Par rapport au fichier binaire langage interprété après le compilateur Go, l'avantage de la performance est évidente. Les résultats de référence informatique, vont bien mieux que la vitesse de Python.

De nombreux autres outils de CLI d'infrastructure sont écrits en Go Il est pas un hasard, raison particulière, s'il vous plaît se référer au troisième point ci-dessous.

écosystème Go est idéal pour les projets d'infrastructure

L'un des avantages de l'open source est que vous pouvez apprendre à apprécier leurs propres projets. Par exemple, Cortex présent dans l'écosystème Kubernetes dans et Kubernetes est lui-même écrit en Go. Nous avons la chance de pouvoir tirer parti de l'écosystème de nombreux projets open source, y compris:

  • kubectl: CLI Kubernetes

  • minikube: un outil de Kubernetes exécuter localement

  • barre: outils de gestion des paquets Kubernetes

  • Kops: outils pour gérer la production de Kubernetes

  • eksctl: EKS l'Amazone officielle CLI

Ces outils sont Kubernetes projet, et utilisent le langage Go. Si vous regardez attentivement les projets d'infrastructure et CockroachDB Hashicorp (y compris Vault, Nomad, Terraform, Consul et Packer), vous les trouverez avec Go langue.

Go ont un impact sur l'infrastructure dans le domaine de la populaire, et qui est d'intérêt pour la majorité des ingénieurs d'infrastructure sont familiers avec Go. Ainsi, il est facile d'attirer à ces ingénieurs. Notre mieux est de trouver un ingénieur par notre AngelList, nous avons la chance qu'il nous a trouvés.

langage de programmation Go est un plaisir

Nous utilisons Go pour construire dernière raison Cortex est que nous avons apprécié le langage de programmation Go.

Par rapport à Python, entrée-Go un peu difficile. Cependant, la tolérance peut apporter du plaisir Go pour les grands projets. Nous sommes très stricts sur les tests de logiciels, mais l'entrée statique et compilé (pour les débutants Go deux problèmes) pour nous est comme une clôture, pour nous aider à écrire du code (relativement) sans bug.

Vous pourriez dire que d'autres langues ont des forces différentes, mais en général, Go peut mieux répondre à nos exigences techniques et esthétiques.

Python pour l'apprentissage de la machine, et Go applicable aux infrastructures

Nous avons également comme Python, il est un endroit dans Cortex, en particulier dans le traitement de raisonnement.

Cortex servir tensorflow, PyTorch, scikit-learn Python et d'autres modèles, ce qui signifie que l'interface avec le modèle et le raisonnement avant et après le traitement ont été réalisés en Python. Bien que le code Python déployé dans un conteneur Docker après l'emballage, mais ces conteneurs sont écrits par le Go chorégraphié.

Si vous êtes intéressé à devenir un ingénieur d'apprentissage machine, vous devez être familier avec Python. Toutefois, si vous êtes intéressé dans les infrastructures, l'apprentissage machine, vous devriez sérieusement envisager Go.

Original: https: // towardsdatascience .com / Pourquoi-on-écrit-apprentissage automatique infrastructure en go-not-python-38d6a37e2d76

Cet article traduction RPSC, s'il vous plaît indiquer la source de la source.

La Chine a développé indépendamment le langage de programmation « Mulan » et est vêtu d'une peau rouge navigateur noyau « étranger »?
Précédent
Il est temps d'introduire derrière Spring Boot / Nuage de luxe de l'équipe de R & D
Prochain
Pandas traitement des données trois tours, vous serez un peu à bord?
200000 serveur complet QQ sur le nuage
visite du Hubei Xiangyang: l'ancienne ville de marée de printemps « de récupération »
observation de sport | Tokyo Jeux olympiques remise, l'armée chinoise quelques larmes heureuses
Ningbo Jiangnan « l'esprit d'eau »: la posture du potentiel d'économie d'eau durable
Le président argentin Xi Jinping experts et chercheurs chaud message du Nouvel An 2020
équipe médicale Guangdong Guangdong gérer un retour progressif
Il est monté à bord les pages des journaux italiens abritent après 90 infirmières sont revenus! Avant les étrangers et les pairs
Juste! Hengqin Port O Port Area officiellement remis Macau! La superficie totale de 66.000 mètres carrés
Vanke Yu Liang: Avant de dire « en direct » est préparé, il y a maintenant un vrai spécial
90 après avoir dit à sa fiancée rétrograde Wuhan chercher du travail sur les soins de santé, des rabais de soins de santé et l'amitié de ses dessins animés
180 m vert super-haut réglé Linyi Nouveau train à grande vitesse, ou deviendra une nouvelle carte de visite Linyi