当前位置:网站首页>Créer des applications distribuées d'une manière simple
Créer des applications distribuées d'une manière simple
2021-09-15 04:28:16 【Somenzz】
Face à des tâches à forte intensité de calcul,En plus des processus multiples,C'est l'informatique distribuée,Comment utiliser Python Et la mise en œuvre de l'informatique distribuée?Partager aujourd'hui une façon très simple de,C'est grâce à Ray.
Qu'est - ce que Ray
Ray Est basé sur Python Cadre informatique distribué pour,Utiliser un modèle de calcul graphique dynamique,Simple à fournir、Générique API Pour créer des applications distribuées.Facile à utiliser,Vous pouvez utiliser la décoration,Il suffit de modifier très peu de code,Pour faire fonctionner une machine autonome Python Le Code facilite l'informatique distribuée,Actuellement, il est principalement utilisé pour l'apprentissage automatique.
Ray Caractéristiques:
1、Fournit des primitives simples pour la construction et l'exécution d'applications distribuées.
2、Permet à l'utilisateur de paralléliser le Code autonome,Les changements de code sont rares, voire nuls.
3、Ray Core Y compris une application、Un vaste écosystème de bibliothèques et d'outils,Pour soutenir des applications complexes.Par exemple, Tune、RLlib、RaySGD、Serve、Datasets、Workflows.
Installation Ray
La façon la plus simple d'installer la version officielle:
pip install -U ray pip install 'ray[default]'
Si oui Windows Système,Les exigences doivent être installées Visual C++ runtime
Voir la documentation officielle pour d'autres méthodes d'installation.
Utiliser Ray
.Un décorateur pour l'informatique distribuée:
import ray ray.init() @ray.remote def f(x): return x * x futures = [f.remote(i) for i in range(4)] print(ray.get(futures)) # [0, 1, 4, 9]
Exécution en premier ray.init()
, Ensuite, ajoutez un décorateur avant la fonction pour effectuer la tâche distribuée @ray.remote
L'informatique distribuée .Décorateur @ray.remote
On peut aussi décorer une catégorie :
import ray ray.init() @ray.remote class Counter(object): def __init__(self): self.n = 0 def increment(self): self.n += 1 def read(self): return self.n counters = [Counter.remote() for i in range(4)] tmp1 = [c.increment.remote() for c in counters] tmp2 = [c.increment.remote() for c in counters] tmp3 = [c.increment.remote() for c in counters] futures = [c.read.remote() for c in counters] print(ray.get(futures)) # [3, 3, 3, 3]
Bien sûr., L'informatique distribuée décrite ci - dessus est toujours effectuée sur son propre ordinateur , Juste sous forme distribuée . Pendant l'exécution du programme , Vous pouvez entrer http://127.0.0.1:8265/#/
Voir l'exécution des tâches distribuées :
Comment réaliser Ray Et l'informatique en grappes ?Regarde en bas..
Utiliser Ray Cluster
Ray L'un des avantages est la possibilité d'utiliser plusieurs machines dans le même programme .Bien sûr.,Ray Peut fonctionner sur une seule machine , Parce que d'habitude , Tu n'as qu'une seule machine . Mais la vraie force est d'utiliser un groupe de machines Ray.
Ray .Le Cluster se compose d'un noeud d'en - tête et d'un ensemble de noeuds de travail . Vous devez d'abord démarrer le noeud de tête ,Voilà. worker Le noeud donne l'adresse du noeud d'en - tête , Formation de grappes :
Vous pouvez utiliser Ray Cluster Launcher Pour configurer la machine et démarrer plusieurs noeuds Ray Cluster.Vous pouvez AWS、GCP、Azure、Kubernetes、Alicloud、 Déploiement interne et Staroid Utilisez l'initiateur de Cluster même sur votre fournisseur de nœuds personnalisé .
Ray Les Clusters peuvent également profiter de Ray Autoscaler,Il permet Ray Interaction avec les fournisseurs de Cloud , Pour demander ou publier des instances conformément aux spécifications et à la charge de travail de l'application .
Maintenant, Faisons une démonstration rapide Ray Fonction du cluster,C'est pour Docker Pour démarrer deux Ubuntu Conteneur pour simuler un Cluster :
- Environnement 1: 172.17.0.2 En tant que head Noeud
- Environnement 2: 172.17.0.3 En tant que worker Noeud,Il peut y en avoir plusieurs. worker Noeud
Étapes spécifiques:
1. Télécharger ubuntu Miroir
docker pull ubuntu
2. Démarrage ubuntu Conteneur,Dépendances d'installation
Démarrer le premier
docker run -it --name ubuntu-01 ubuntu bash
Activez le deuxième
docker run -it --name ubuntu-02 ubuntu bash
Vérifiez leur IP Adresse:
$ docker inspect -f "{{ .NetworkSettings.IPAddress }}" ubuntu-01 172.17.0.2 $ docker inspect -f "{{ .NetworkSettings.IPAddress }}" ubuntu-02 172.17.0.3
Ils sont ensuite montés séparément à l'intérieur du récipient python、pip、ray
apt update && apt install python3 apt install python3-pip pip3 install ray
3. Démarrage head Noeuds et worker Noeud
Sélectionnez dans l'un des conteneurs comme head Noeud,Choisissez ici 172.17.0.2,Mise en œuvre:
ray start --head --node-ip-address 172.17.0.2
Le port par défaut est 6379,Vous pouvez utiliser --port
Paramètres pour modifier le port par défaut , Les résultats après le démarrage sont les suivants :
Ignorer les avertissements , Vous pouvez voir que ça donne un indice , Si vous voulez lier d'autres noeuds à head,Ça peut être comme ça:
ray start --address='172.17.0.2:6379' --redis-password='5241590000000000'
Exécutez la commande ci - dessus sur un autre noeud ,Prêt à démarrer worker Noeud:
Si vous voulez fermer ,Mise en œuvre:
ray stop
4、Exécution des tâches
Choisissez n'importe quel noeud ,Exécutez le script suivant,Modifier ray.init() Paramètres de la fonction:
from collections import Counter import socket import time import ray ray.init(address='172.17.0.2:6379', _redis_password='5241590000000000') print('''This cluster consists o f {} nodes in total {} CPU resources in total '''.format(len(ray.nodes()), ray.cluster_resources()['CPU'])) @ray.remote def f(): time.sleep(0.001) # Return IP address. return socket.gethostbyname(socket.gethostname()) object_ids = [f.remote() for _ in range(10000)] ip_addresses = ray.get(object_ids) print('Tasks executed') for ip_address, num_tasks in Counter(ip_addresses).items(): print(' {} tasks on {}'.format(num_tasks, ip_address))
Les résultats sont les suivants:
Je vois. 172.17.0.2 Mise en œuvre 4751 Tâches,172.17.0.3 Mise en œuvre 5249 Tâches, Les effets de l'informatique distribuée ont été réalisés .
Les derniers mots
C'est bon. Ray, Vous pouvez ne pas utiliser Python Et le multi - processus pour réaliser l'informatique parallèle . Aujourd'hui, l'apprentissage automatique est principalement axé sur les tâches à forte intensité de calcul , La vitesse serait très lente sans l'informatique distribuée ,Ray Offre une solution simple pour réaliser l'informatique distribuée . La documentation officielle fournit des tutoriels et des exemples très détaillés , Si vous êtes intéressé, vous pouvez aller voir .
Si ça aide, Il vaut mieux faire attention. ,Apprendre tous les jours Python Technique. Si vous avez des questions Laissez un message pour discuter.
Cet article est partagé par Wechat public Number - PythonNuméro sept.(PythonSeven) ,Auteur:somenzz
La source originale et les informations reproduites sont détaillées dans le texte,En cas d'infraction,Veuillez contacter: [email protected] Supprimer.
Date de publication originale: 2021-08-30
Participation à cet articleTencent Cloud Self - media Sharing Plan,Bienvenue à la lecture,Partager ensemble.
版权声明
本文为[Somenzz]所创,转载请带上原文链接,感谢
https://chowdera.com/2021/09/20210914180056982b.html
边栏推荐
- Garde la distance.
- 90 lines of code to implement the module packer
- When the OrCAD schematic is opened, suddenly the schematic file cannot be found
- Purpose and difference between Maitreya clamp and active clamp of IGBT
- [PHP source code] z-blogphp pirate navigation theme template
- Architecture and data science behind hundreds of thousands of experiments a year
- 大廠Android面試總結 詳細解答,Android技術圖譜
- Résumé de l'entrevue Android de Dachang, carte technique Android
- 大厂程序员35岁后的职业出路在哪,京东最新Android面试真题解析
- 万字长文,面试官老爱问适配器模式与外观模式,
猜你喜欢
-
大厂Offer拿到手软啊,程序员中年危机
-
大厂Offer拿到手软啊,不可思议
-
Le résumé de l'entrevue Android de Dachang est en retard
-
Agent de cache SQUID
-
6 - year New Bird Development interview Byte Jumping Android R & D Post, Dry goods collation
-
Notes d'étude de HongMeng, 714 pages PDF, or, neuf, argent et dix
-
大廠Offer拿到手軟啊,不可思議
-
L'offre de la grande usine est douce. Incroyable.
-
L'offre d'une grande usine est douce.
-
L'intervieweur demande toujours le mode adaptateur et le mode d'apparence.
随机推荐
- Où est la sortie professionnelle pour les programmeurs d'usine après 35 ans?
- 大廠Offer拿到手軟啊,程序員中年危機
- Stockage de produits Cloud packages, illimité et gratuit
- Opencv4 machine learning (VI): principle and implementation of k-means
- [yolop interpretation] you only look once for panoramic driving perception
- Tencent Cloud et d'autres systèmes de protection préférentiels
- Nombre maximum de points en ligne droite
- [interpretation of pointpillars] fast encoder for point cloud target detection
- [rangenet + + interpretation] fast and accurate lidar semantic segmentation
- [yolof interpretation] you only look one level feature (CVPR 2021)
- [SNE roadseg interpretation] pavement segmentation network combined with surface normal vector (eccv2020)
- [yolox interpretation] anchor free target detector comparable to yolov5!
- Opencv4 machine learning (4): geometric transformation and affine transformation of images
- Detailed explanation of fast SCNN semantic segmentation network
- 萬字長文,面試官老愛問適配器模式與外觀模式,
- 大牛耗时一年最佳总结,让你的app体验更丝滑,BAT大厂面试总结
- 不敢跟面试官对线,通过五轮面试斩获offer阿里实习生亲述,
- Comparison of location loss functions in target detection network: IOU, giou, ciou, Diou, L1, L2, smooth L1
- Blue Bridge Cup software provincial competition in April 2021: title + analysis (full version)
- [C + + cultivation plan] don't talk about learning, just talk about dry goods (Day1)
- Tf2.0 deep learning practice (1): handwritten numeral recognition for classification problem
- 大廠程序員35歲後的職業出路在哪,京東最新Android面試真題解析
- Invitation | réunion Apache Pulsar 2021 - Shenzhen ce samedi
- The Dot Net Application Domain Study
- Trigger study
- Universal code, achieving with action -- Safety code scanning Professional Committee
- N'osez pas vous opposer à l'intervieweur et obtenir des commentaires personnels des stagiaires d'offer Ali après cinq rondes d'entrevue.
- Daniel prend le meilleur résumé de l'année pour rendre votre expérience d'application plus soyeuse.
- Easy to use and convenient development team management tool -- apipost
- 如何试出一个Android开发者真正的水平,【面试总结】
- 如何才能通过一线互联网公司面试,Android经典入门教程
- Comment passer une entrevue avec une entreprise Internet de première ligne, Android Classic Getting started tutoriel
- Comment essayer un développeur Android vraiment niveau, 【 résumé de l'entrevue 】
- Ad redefines PCB size
- [wonderful learning journey of cloud computing] phase I: getting to know cloud computing for the first time
- Sf58-asemi high voltage fast recovery diode in-line package
- Asp.net quick build application page main framework
- Soul painter: cartoon illustration SSH
- Special live broadcast of the first anniversary celebration of Hongmeng community · invitation letter
- Mathematics Interview Questions (X)