Pourquoi l'infrastructure d'apprentissage machine à écrire avec Go, au lieu de Python?

Le texte intégral 2626 Les mots, lorsque l'apprentissage tout au long attendu 8 minute

Source: blog.sina

Python est un projet d'apprentissage automatique dans la langue la plus populaire, cela est hors de doute.

Bien que, comme le langage R, C ++ langage de programmation et ainsi Julia a ses cas uniques d'utilisation et les groupes d'utilisateurs pour les rendre durables, mais Python est toujours la langue la plus utilisée, et pour tous les grands cadre d'apprentissage machine.

Cependant, pouvez-vous imaginer? Dans Cortex (modèles d'apprentissage automatique déployés dans l'une des API de la plate-forme open-source) base de code, 87,5% du code est écrit en utilisant GO.

. Figure Source: Cortex GitHub

Python fiers d'algorithmes d'apprentissage machine à produire seulement une partie du système d'apprentissage automatique de l'environnement. Si vous voulez exécuter réellement un grand environnement de production à grande échelle API Machine Learning, vous avez besoin de l'infrastructure pour atteindre les fonctions suivantes:

mise à l'échelle automatique, assurez-vous des fluctuations de flux ne nuisent pas à l'API

· Mise en uvre de la gestion des API pour gérer le déploiement de l'API de synchronisation

· Mises à jour des Rolling, assurez-vous de mettre à jour le modèle sans perturber le service utilisateur

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

Pour les considérations suivantes, Go est conçu pour répondre le logiciel idéal pour les exigences suivantes:

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

Source: zcool

L'un des avantages de l'open source est que vous pouvez continuer à tirer parti de leur appréciation du projet. Par exemple, Cortex existe dans Kubernetes (lui-même écrit dans Go) écosystème. Heureusement, on peut se référer à un grand nombre de bons projets open source dans l'écosystème, 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

Tous les outils ci-dessus est non seulement projet Kubernetes, et sont rédigés en Go. Que ce soit ou Hashicorp Voir les projets d'infrastructure CockroachDB (y compris Vault, Nomad, Terraform, Consul et Packer), vous trouverez qu'ils utilisent la langue Go.

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 connaissent la langue Go. Ainsi, il est facile d'attirer ces ingénieurs GO. En fait, l'un des meilleurs ingénieurs Cortex Labs est de trouver notre position en effectuant une recherche sur Go AngelList. Il nous a trouvé, nous nous sentons très chanceux.

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

Les utilisateurs peuvent déployer un certain nombre de différents modèles pour différentes API, et tous les modèles sont dans le même cluster pour gérer Cortex. Le Cortex opérateur a également besoin de gérer ces différents déploiement grâce à une API. Par exemple:

· Appel Cortex modèle de déploiement Kubernetes API sur un cluster.

· Cortex appeler différentes API AWS (y compris EC2 Auto Scaling, S3, CloudWatch, etc.) pour gérer le déploiement d'AWS.

Les utilisateurs n'interagissent pas directement avec l'API. En revanche, Cortex appel à l'API par programme pour fournir ces clusters, commencer à déployer et à l'API du moniteur.

Dans un système efficace, fiable API appel croisé est un défi majeur. L'utilisation concomitante de l'API est la façon la plus efficace d'utiliser la méthode, mais soulève aussi la question, parce que maintenant nous avons à vous soucier des choses comme des conditions de course.

programme Go fournit une solution simple à ce problème: goroutines.

Goroutines Go est une fonction normale d'exécuter du code d'une manière simultanée. Nous pouvons écrire un autre long article travail d'étude approfondie goroutines derrière, mais une manière générale, goroutines est géré automatiquement transférés des fils d'exécution légers. Plus goroutine peut être placé sur un thread OS, si goroutine bloqué thread OS, le moteur d'exécution Go se déplace automatiquement sur le reste du nouveau thread OS goroutine.

Goroutines fournit également une fonctionnalité appelée « canal » Cette fonction permet aux utilisateurs de transférer des messages entre goroutines, demande d'ordonnancement des utilisateurs d'aide et d'éviter les conditions de course.

Bien sûr, les utilisateurs peuvent également utiliser les derniers outils asyncio tels que ces fonctions en Python, mais Go a été conçu pour tenir compte de ces circonstances, l'utilisation de GO peut réduire le fardeau de notre travail et la vie.

3. Utilisez le langage de programmation Go est un plaisir

Source: Pexels

Nous utilisons Go pour construire dernière raison Cortex est: Go langue est vraiment très bon.

Par rapport à Python, l'entrée-Go un peu de douleur. Cependant, la prise en compte de la performance Go pour le projet à grande échelle pour apporter confort. Nous sommes encore des logiciels de tests rigoureux, mais l'entrée statique et la compilation (deux problèmes débutant Go) d'agir comme notre clôture sur le terrain, nous aide à écrire (relativement parlant) pas de code d'erreur.

Vous pouvez parler d'autres langues offriront également des avantages spécifiques, mais en général, Go satisfaire nos exigences techniques et esthétiques.

4. Allez à construire CLI multi-plateforme plus facile

Cortex CLI est un outil multi-plateforme qui permet aux utilisateurs directement à partir des modèles de déploiement de la ligne de commande et API de gestion. Le schéma suivant illustre l'opération de déplacement de la CLI:

. Figure Source: Cortex GitHub

Dans un premier temps, nous CLI en Python, mais le fait que la CLI de distribution multiplateforme trop difficile. Le Go peut être compilé des fichiers binaires (sans gestion reposant), le programme fournit une distribution multi-plateforme pratique et facile CLI pour nous, sans la nécessité d'un travail d'ingénierie supplémentaire.

Par rapport Go compilé code binaire langage interprété, a des avantages évidents de performance. Les résultats de référence informatique, vitesse GO est beaucoup mieux que Python.

De nombreux autres outils CLI de l'infrastructure est également utilisée pour préparer GO, cela peut ne pas être accidentelle.

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 modèles Python et d'autres, ce qui signifie que l'interface avec le modèle, le raisonnement avant et après le traitement ont été réalisés en Python. Cependant, même le code Python déployé dans un conteneur Docker après l'emballage, ces conteneurs sont utilisés par le code écrit en Go chorégraphié.

Source: Pexels

Si vous êtes intéressé à devenir un ingénieur d'apprentissage machine, vous devez être familier avec Python. Toutefois, si vous êtes intéressé par les utilisations d'infrastructure d'apprentissage machine, envisager sérieusement la langue Go, gagnera certainement plein ~

pouces Message attention

Ensemble, nous partageons l'apprentissage et le développement de l'IA sec

Tels que réimprimer, s'il vous plaît laisser un message dans les coulisses, se conformer aux normes de réimpression

À ne pas manquer! MacBook améliorer l'efficacité des cinq conseils
Précédent
Phoenix, Phoenix temps de programme d'intelligence artificielle est venu de
Prochain
Aujourd'hui, le son de base | pas acheter des masques? Enseignez-vous suivi en temps réel du réseau tout il n'y a pas de marchandises
processus d'apprentissage machine robot automatisation + = Intelligent Automation
Code détaillé: 10 pratiques VSCode pour accélérer le processus de développement de React
Besoin d'idées? Ce cinq APP créatif stimulant, peuvent être organisées sur
son coeur aujourd'hui | officiel a annoncé! GSMA MWC 2020 Assemblée générale a officiellement aboli Barcelone
inefficace des heures supplémentaires? Voici des exemples
Remarque! En python Ne pas utiliser une liste de toutes les opérations
Aujourd'hui, le son de base | gouvernement, soins de santé, l'éducation, l'accès à la forte hausse des données applet sur l'épidémie publié
CLI avancée: commandes que vous devez connaître en tant que développeur
De « en ligne » à « le nuage »: l'épidémie récrire encore une fois l'écosystème de l'industrie chinoise
Aujourd'hui, le son de base | CT sortie des résultats de secondes! Huawei nuage AI a lancé un nouveau diagnostic de pneumonie couronne
Comment Wuhan dans le développement futur de l'épidémie? Les principaux modèles prédictifs d'apprentissage profond VOLER?