Application de TensorFlow dans les projets d'ingénierie Vidéo de classe ouverte + Transcription de texte (Partie 2) | AI Research Institute

Ce jeudi, Leifeng.com AI Research Institute a invité Bai Fachuan, un architecte de données senior du géant multinational de l'informatique ThoughtWorks, à donner un cours ouvert en ligne et à l'expliquer à tout le monde. L'application de TensorFlow dans les projets d'ingénierie .

Maître de conférences

Bai Fachuan : Permettez-moi de me présenter. Je m'appelle ThoughtWorks Bai Fachuan. J'ai déjà été impliqué dans le big data, puis nous avons commencé à faire quelques tentatives et à travailler dans le sens de l'intelligence artificielle. Nous nous engageons à combiner l'intelligence artificielle, l'apprentissage automatique et le big data. Après avoir recherché de nombreux cadres d'apprentissage automatique connexes, nous avons également créé notre propre cadre d'apprentissage en profondeur - deeplearning.scala. Il est écrit par scala et est actuellement open source, vous pouvez en apprendre davantage.

Voici la vidéo enregistrée du cours public :

Ouvrir la version texte de la classe

Pour les chaussures pour enfants qui ne sont pas pratiques pour regarder la vidéo, vous pouvez lire la transcription textuelle de cette classe ouverte sur Lei Feng.com.

En raison de la longueur du texte, la transcription textuelle de cette classe ouverte a été divisée en deux parties, voici la partie suivante. Pour le dernier article, veuillez vous référer à l'application de Lei Feng.com de TensorFlow dans les projets d'ingénierie Open Course Video + Text Transcription (Part 1) | AI Research Club.

Bai Fachuan : Nous avons mentionné ci-dessus plusieurs architectures de Big Data différentes, qui sont liées au modèle d'évaluation de la maturité des données mentionné précédemment - nous évaluerons d'abord le niveau des données d'une entreprise avant de savoir laquelle est actuellement la meilleure solution.

Intelligence Artificielle et Big Data

Parlons maintenant de l'intelligence artificielle.

En fait, le concept d'intelligence artificielle n'est pas un phénomène récent, on en parlait depuis longtemps, il y a des décennies. L'objectif principal de l'IA est que nous voulons que les machines pensent comme les humains. Alors comment une machine peut-elle penser comme un humain ?

Deux branches ont été développées ici : l'une est le modèle de la théorie des probabilités précoces et l'autre est le réseau de neurones.

Notre HMM commun et notre bayésien appartiennent à la théorie des probabilités. Pour le traitement des données dans la théorie des probabilités, vous avez essentiellement un échantillonnage ou un calcul sous forme de probabilité. Ainsi, dans les premiers jours, lorsque la quantité de données n'est pas particulièrement importante, la théorie des probabilités sera un choix particulièrement judicieux.

De plus, la théorie des probabilités peut gérer des ensembles de données qui ne sont pas trop volumineux, elle est donc relativement plus couramment utilisée. Par exemple, nous utilisons HMM pour la segmentation des mots, ce qui est également un très bon scénario. Une autre branche est le réseau de neurones. Les réseaux de neurones ont été proposés depuis longtemps, mais ces dernières années, divers cadres de réseaux de neurones profonds sont progressivement devenus populaires. Parce que récemment, nous avons constaté que la puissance de calcul des ordinateurs a été améliorée - le réseau de neurones fonctionne mieux lorsque la quantité de données est plus importante ; lorsque le réseau de neurones est plus profond, il fonctionne mieux ; et tout cela repose sur la puissance de calcul de l'ordinateur. Il existe également plusieurs types de réseaux de neurones, tels que les réseaux de neurones profonds, les réseaux de neurones récurrents, la convolution, etc. Si la puissance de calcul des ordinateurs ne se développe pas, l'intelligence artificielle dont nous parlons restera au laboratoire. Par conséquent, s'il n'y a pas de support de données derrière cela, l'IA n'a fondamentalement aucun effet.

Nous ne pouvons pas prendre dix éléments de données pour la formation, si nous voulons passer à l'environnement de production. De telles données ne peuvent pas répondre aux exigences de production dans la nature. Au début, les données étaient en train de se développer, en fait, l'intelligence artificielle se développe également, mais son stade de développement est différent. Au tout début, l'intelligence artificielle peut rester au stade théorique. Nous savons qu'il existe des algorithmes et des articles, mais il y a en fait beaucoup de temps pour l'appliquer réellement à la production, à la commercialisation et à la commercialisation. Après cela, nous entrerons dans une nouvelle étape : de nombreuses entreprises feront des laboratoires d'IA et ouvriront un laboratoire pour essayer sur la base des données existantes pour voir s'il existe une meilleure solution.

La prochaine étape est l'ère du big data. A ce moment, les performances de traitement des données deviennent particulièrement élevées. Nous avons constaté que l'IA est intrinsèquement dépendante des données. Maintenant que la capacité de traitement des données s'est améliorée, l'IA va sûrement inaugurer un très bon développement. C'est la situation à laquelle nous sommes actuellement confrontés. De nombreuses entreprises utilisent des plateformes de mégadonnées pour traiter les données. Avec le big data, de nombreuses entreprises utiliseront l'intelligence artificielle pour mieux servir leur entreprise.

Voici une bonne solution d'architecture d'intelligence artificielle utilisée en production.

Comme mentionné dans l'article précédent, les données et l'intelligence artificielle peuvent être complètement séparées, mais la combinaison des deux est la solution ultime. Sans intelligence artificielle, nous pouvons utiliser les données comme une plateforme de mégadonnées. Avec l'intelligence artificielle, nous pouvons étendre la plate-forme de données volumineuses et en faire une architecture plus parfaite, c'est pourquoi l'architecture des données est très importante - si votre intelligence artificielle peut être bien connectée. Comme le montre la figure, la plate-forme de données est principalement responsable d'une série de travaux liés à la préparation des données, tels que le traitement des données, le stockage des données, la récupération des données et l'exploration des données.

Lorsque les données sont prêtes, pour l'apprentissage automatique, il se contente d'extraire des fonctionnalités et de former des modèles en fonction de vos données, et une grande partie du travail sera effectuée sur la plate-forme de données. En termes simples, certaines entreprises peuvent avoir des exigences plus élevées en matière de confidentialité des données - il y aura un cryptage des données et divers cryptages. Ensuite, il y aura un décryptage des données pendant le processus d'opération. Il n'y a aucun moyen pour le réseau de neurones d'effectuer le processus de cryptage et l'action de décryptage. Il ne peut être placé que sur la plate-forme de données. Par conséquent, la plate-forme de données a des exigences très élevées en matière de capacités de traitement des données, ce qui détermine directement l'effet ultérieur.

Une fois la construction de notre plate-forme de données terminée, il existe déjà un environnement de données distribuées. C'est ce que nous allons faire, juste pour dire qu'il existe un système qui peut très bien s'ajouter aux données distribuées pour former un modèle. À l'heure actuelle, TensorFlow prend déjà en charge la distribution de modèles, ce qui est un très bon effet.

Au début, la formation de modèle ne prenait pas en charge la formation distribuée, c'est-à-dire que votre modèle était formé sur une machine et formé de manière indépendante. Il n'y a aucun moyen de faire travailler deux machines ensemble pour former un modèle. À l'heure actuelle, TensorFlow a fait un très bon travail en prenant en charge la formation distribuée de modèles, bien sûr, à l'aide de son concept de graphe informatique.

Pour une série de problèmes techniques très détaillés des graphes de calcul Tensorflow, le dernier cours "TensorFlow and Neural Network Algorithm Advanced Application Class" expliquera comment Tensorflow prend en charge la formation distribuée des modèles. Dans cette architecture, nous avons des clusters d'intelligence artificielle de systèmes GPU et CPU en bas.En plus de cela, la formation distribuée des modèles que nous créons générera des modèles. La plate-forme de données fournira également une autre fonction, à savoir le streaming en temps réel.

Il y a une branche dans cette architecture que vous pouvez voir, qui est le streaming en temps réel. La combinaison avec l'intelligence artificielle est la prédiction en temps réel. Après la prédiction en temps réel, les données sont affichées et directement renvoyées à l'utilisateur sous forme de prise de décision. En fait, une autre fonction du streaming en temps réel est la formation continue du modèle. Et dans ce lieu d'utilisation, vous pouvez également voir une flèche, c'est-à-dire que les données sont à nouveau entrées dans la plate-forme Big Data. C'est une architecture que nous préconisons actuellement, appelée architecture pilotée par les données. L'utilisateur génère des données, et les données servent l'utilisateur. Si votre processus est bénin : par exemple, si j'utilise ce système et que le système me sert, ce processus est bénin et s'améliore de plus en plus ; plus j'utilise le système, meilleure est son expérience pour moi, alors le système s'auto- évoluent et s'améliorent de plus en plus, c'est donc cette architecture que nous utilisons actuellement dans toutes les implémentations.

Pratiques d'ingénierie avec TensorFlow

TensorFlow lui-même est un framework de réseau neuronal profond. Son module de calcul, le core Core, est écrit en C++. Il fournit de nombreuses API au monde extérieur. Au début, il n'y avait que Python. Après la version 1.0, l'API Java a été ajoutée, mais elle est encore en phase de test, pas particulièrement stable ou parfaite. Donc, pour TensorFlow, nous préférons toujours Python.

Pour Python, nous regrouperons l'apprentissage automatique en tant que service ou le fournirons sous d'autres formes. Dans cette partie, il fournit Python en externe et C++ en interne, et il y a un échange de données au milieu, qui a lieu en mémoire, c'est-à-dire que la logique de calcul requise par Python est convertie en C++, et le résultat est renvoyé après le calcul sous-jacent.

Dans un système d'intelligence artificielle complet, la distribution existe à deux endroits : la distribution des données et la distribution des modèles. La distribution des données est principalement prise en charge par des lacs de données, et nos données sont stockées de manière distribuée. L'avantage du stockage de données distribué est que je peux obtenir rapidement des données à partir de différents nuds. À ce stade, pour le système, seule la bande passante doit être étendue.

En production réelle, pour les entreprises, le coût de construction d'une bande passante réseau de niveau Go avec une ligne dédiée sera bien inférieur au coût d'augmentation du matériel informatique. C'est l'une des raisons pour lesquelles la distribution des données existe et s'améliore de plus en plus.

De plus, TensorFlow prend en charge la distribution de modèles. Lorsque nos données sont distribuées, notre modèle est distribué, et la combinaison des deux rendra la vitesse d'entraînement complète particulièrement rapide. Dans Tensorflow, le calcul du modèle peut générer un graphe de calcul en fonction du code du modèle d'entraînement que vous avez écrit, puis distribuer chaque graphe de calcul indépendant à différents nuds en fonction de votre graphe de calcul, puis s'entraîner et enfin générer un modèle unique. un point que TensorFlow fait un très bon travail dans la formation distribuée.

Mais quand on regarde en arrière, TensorFlow est, par essence, une bibliothèque python en cours d'utilisation. Ainsi, lorsque nous réalisons un projet d'ingénierie de réseau de neurones, nous pouvons dire que TensorFlow est l'une de nos bibliothèques et que nous l'utilisons. Relativement parlant, il occupe un petit module dans notre système.

TensorFlow est un framework de réseau neuronal profond, mais ce n'est pas le seul, comme Caffe, MXnet, Theano et la version Java de Deeplearning4j. De tels cadres existent déjà. Alors pourquoi disons-nous que TensorFlow est un meilleur choix à notre avis ?

En termes de développement, tout le monde le définit comme "le meilleur cadre de réseau neuronal profond pour l'ingénierie", ils ont donc tendance à choisir TensorFlow. D'autres frameworks sont également utilisés dans de nombreux scénarios, tels que les laboratoires ou les universités ; mais pour les ingénieurs, nous espérons qu'une manière plus conviviale d'empaqueter l'utilisation de l'API facilitera la compréhension des ingénieurs ; abaissera le seuil et réduira le besoin de mathématiques Require.

Un cadre de réseau de neurones, plus il est conçu primitif, plus les exigences mathématiques sont élevées. Ce n'est pas particulièrement convivial pour les ingénieurs. Et TensorFlow est un compromis entre les deux.

Python

Étant donné que TensorFlow est simplement une bibliothèque Python, lorsque nous développons des projets d'intelligence artificielle, notre développement a essentiellement évolué vers la manière de bien développer des projets Python.

À l'heure actuelle, qu'il s'agisse de faire du machine learning ou de l'analyse de données, Python a une très bonne dynamique, et tout le monde l'utilise. Et ce que plus de plates-formes fournissent, c'est en fait la façon dont Python est utilisé comme API, et Python représente une très grande proportion. Par conséquent, il est très important d'apprendre Python pour les projets d'intelligence artificielle. C'est-à-dire que si vous voulez étudier TensorFlow, vous devez apprendre Python avant de poser des bases solides.

Pour Python, il y a Python2 et 3, nous recommandons actuellement Python3. Il y a beaucoup de bibliothèques impliquées dans Python. Nous devons gérer la bibliothèque. C'est la même chose que yum. Nous pouvons utiliser pip pour gérer notre bibliothèque. Il y a un virtualenv ci-dessous. Pour le langage léger de Python, dans notre système, il existe parfois différentes versions de projets Python, ce qui nécessite un bon environnement d'isolation, afin que nos deux environnements soient isolés et ne s'affectent pas. Par exemple, un de mes projets est Python2, et l'autre est Python3. Je veux que ces deux projets s'exécutent en même temps dans mon système. virtualenv fournit une très bonne fonction : il encapsule l'environnement Python, vous permettant d'avoir différentes versions ., Différentes bibliothèques existent en même temps dans un système. Pour virtualenv, il fournit un environnement virtuel Python.On trouvera dans le processus de production qu'il est particulièrement difficile à gérer lorsque l'on a beaucoup de virtualenvs. Nous allons donc choisir virtualenvwrapper, sa fonction est de gérer tous les virtualenvs du système, y compris votre création et vos commutateurs, peut être entièrement géré.

Lorsque nous avons un environnement de développement - c'est-à-dire les outils mentionnés ci-dessus, ils sont tous utilisés à tout moment du processus de développement. Avec ces outils en place, la prochaine étape consiste à développer le code.

Pour Python, il existe de nombreux outils. IPython Notebook est un IDE Web Python léger, nous pouvons écrire du code Python sur des pages Web. Il est divisé en différentes étapes, peut exécuter du code localement et peut rapidement voir ce que nous voyons est ce que nous obtenons. C'est également notre choix préféré lors de l'exploration de données ou de certaines expériences. Nous pouvons analyser rapidement si toute notre opération est correcte ou non, et si nous devons continuer.

Voici donc pourquoi nous utilisons virtualenv - nous avons besoin d'un environnement séparé pour exécuter nos projets. Cette idée est un peu similaire au Docker actuel. De plus, lorsque nous réalisons un projet relativement important, nous pouvons utiliser l'IDE de l'environnement de développement intégré, tel que l'IDE de style Pycharm qui est actuellement très couramment utilisé dans le développement et qui est essentiellement utilisé à 100 %. Dans un environnement formel, en particulier une équipe, il est surtout utilisé lorsque tout le monde aide au développement.

IC/CD

Pour le développement technique, une fois l'un de nos projets développé, nous devons passer en ligne, tester et déployer ; pour les projets non IA, nous aurons CI/CD. Une fois le code écrit, nous devons déployer, tester et exécuter. Nous pouvons automatiser cette série, qui est CI/CD.

Notre code fait référence au contrôleur de version, CI/CD surveillera automatiquement les changements de code, puis empaquetera le code et exécutera le test. Après succès, il sera déployé pour vous et les résultats seront affichés sous une forme visuelle. Il s'agit d'un outil CI/CD couramment utilisé dans notre développement de projet général, donc dans un projet d'IA, ferons-nous CI/CD ?

En fait, ce sera le cas.

Tout d'abord, le CI/CD de l'intelligence artificielle est similaire au processus général du projet, mais il y aura quelques différences. Comme auparavant, après la modification de la logique du code, l'ensemble du pipeline CI/CD sera déclenché, et il existe une autre branche : le déclenchement du pipeline de données.

Qu'est-ce qu'un pipeline de données ?

Les données d'intelligence artificielle mentionnées ci-dessus sont divisées en deux parties : l'une est la partie données et l'autre est la partie intelligence artificielle. Cela signifie que dans notre projet d'intelligence artificielle, il y a une logique, et dans les données, il y a des données. Lorsque de nouvelles données arrivent ou lorsque le code logique de mon modèle change, les deux déclenchent votre CI/CD.

Après le déclenchement du CI/CD, en plus de l'évaluation de base des tests unitaires comme dans les projets généraux, nous avons une fonction supplémentaire, qui est l'évaluation du modèle. Pour cette partie de la fonction, il s'agit plutôt de faire de la transformation sur CI/CD.

Qu'est-ce que l'évaluation du modèle ? Pour le système général, dans quelles circonstances, nous considérons que cette épreuve est suspendue. C'est que sa sortie réelle est incompatible avec notre sortie attendue, et nous pouvons la considérer comme bloquée.

Pour l'IA, dans quelles circonstances pensons-nous que ce développement est un échec ? C'est le modèle qui va mal, l'un après l'autre. Par exemple, la précision du modèle que j'ai entraîné pour la première fois était de 90 %, la deuxième fois de 80 % et la troisième fois de 70 %. De ce point de vue, bien que le code fonctionne très correctement, l'effet diminue, et cette évaluation devrait être enregistrée par CI/CD. Une fois le code enfin soumis et le modèle formé, si son effet est pire que le modèle précédent, votre CI/CD est suspendu au sol cette fois et la tâche entière ne passera pas.

De cette façon, on peut s'assurer que les performances de l'ensemble du développement sont à la hausse, ce qui évite à une équipe d'encombrer le code de développement et de changer constamment de méthodes, et constate finalement que le modèle se dégrade à chaque fois.

Scénarios d'application TensorFlow

Essentiellement, l'IA vise à mieux aider les gens à réfléchir et à prendre des décisions, de sorte que les scénarios seront relativement larges et généraux. Mais la différence est la suivante : quel type d'exigences souhaitez-vous atteindre dans ce scénario général ?

Reconnaissance d'images

Par exemple, lorsqu'il s'agit d'intelligence artificielle ou d'apprentissage en profondeur, ou de réseaux de neurones convolutifs, tout le monde pensera à la reconnaissance d'images, qui est un domaine très général. Cependant, dans ce domaine, nous devons évaluer et réaliser comment atteindre le niveau de raffinement. Par exemple, dans notre projet précédent, nous avons une fois construit un système de commerce électronique pour analyser ses images - un vendeur de commerce électronique peut télécharger un grand nombre de photos, pour l'ensemble de la plate-forme de commerce électronique, j'espère analyser l'image et savoir quels objets sont contenus dans l'image téléchargée. Par exemple, nous pouvons reconnaître qu'il s'agit d'un canapé, l'autre est une personne, et ainsi de suite. Certaines reconnaissances d'objets dans cette série.

Robot de magasinage

Il s'agit d'une implémentation de l'utilisation de TensorFlow pour subdiviser le domaine de la reconnaissance d'images. De plus, en plus du domaine de l'image, pour le concept d'IA, beaucoup de gens évoquent l'IA et tout le monde pensera aux robots. En fait, dans le monde industriel, les robots sont largement utilisés, en particulier dans les entrepôts.Les robots d'entreposage, menés par Amazon, ont pris la tête de l'industrie. À l'heure actuelle, c'est devenu très courant, au moins tout le monde investit, fait des recherches et se développe dans ce domaine.

La fonction principale des robots de magasinage est de déplacer des marchandises. Comme vous pouvez le voir sur l'image ci-dessus, un robot d'entrepôt porte une étagère. Au début, le fonctionnement de l'entrepôt était "les gens arrivent aux marchandises", et les gens apportaient les choses qu'ils voulaient devant les marchandises, et l'effet était très médiocre.

Avec le nouveau robot d'entreposage coordonné par l'IA, notre objectif est "marchandise à personne" - je suis immobile et ce dont j'ai besoin sera déplacé par le robot. Alors, quel est le problème ici ?

C'est-à-dire que lorsque plusieurs robots se déplacent dans l'entrepôt, il est nécessaire de s'assurer que deux robots de sécurité n'entrent pas en collision. De plus, ils doivent trouver le chemin le plus court, appelé planification du chemin du robot d'entreposage : comment devez-vous vous y prendre exactement. C'est aussi un scénario d'application de l'IA. Eh bien, c'est aussi une implémentation faite avec TensorFlow.

Système de pointage intelligent

Dans le passé, la notation des articles était généralement effectuée par des personnes, voire par plusieurs personnes. Mais dans le domaine de l'intelligence artificielle, nous avons constaté que ce que les gens font avec expérience peut en fait être fait par des ordinateurs. Lorsque nous utilisons le framework TensorFlow, il existe une fonction appelée réseau neuronal récurrent, qui est principalement utilisée pour gérer la formation de séries chronologiques. Dans le domaine du langage naturel, il présente également un avantage particulièrement intéressant et peut être utilisé à cette fin. L'essence de ce projet est donc d'utiliser la notation par machine pour remplacer les personnes chargées de noter les papiers.

Recrutement intelligent

Le but du recrutement intelligent est de faire en sorte que les demandeurs d'emploi, les candidats et les recruteurs aient une très bonne adéquation, afin que les personnes les plus appropriées puissent se rendre là où elles sont le plus nécessaires. Dans ce cas, nous devons faire beaucoup d'analyses de données sur les deux parties, et les données proviennent non seulement de l'individu lui-même, mais aussi d'endroits sociaux ou autres, puis faire une correspondance basée sur toutes les données des deux parties.

système de publicité en ligne

Il semble que cela ressemble un peu au système de recommandation, mais lorsque nous travaillerons sur ce système, vous constaterez en fait qu'il y aura des différences essentielles entre le système de publicité en ligne et le système de recommandation.

On dit que le bénéficiaire du système de recommandation est l'utilisateur utilisateur, alors que pour un système publicitaire, son bénéficiaire est la plateforme ou l'annonceur. De plus, le système de recommandation doit trouver le schéma de recommandation optimal qui se conforme à l'utilisateur individuel ; mais le système de diffusion de publicité en ligne doit atteindre la maximisation des bénéfices.

Deuxièmement, il a une règle. Par exemple, si je conçois cette publicité, qu'elle soit raisonnable ou non, je veux juste la diffuser. Ensuite, il y a plus de règles pour intervenir ici, coopérer et apprendre, et réaliser conjointement un système de publicité en ligne. Cette pièce est relativement plus compliquée que le système de recommandation.

Système recommandé

Les systèmes de recommandation sont utilisés dans de nombreux endroits, et même lorsqu'il s'agit de servir les utilisateurs, cela implique en fait une recommandation. Par exemple, de nombreuses applications que nous utilisons vous enverront beaucoup de nouvelles, qui sont essentiellement filtrées. recommandé dans ce domaine. Il existe de nombreuses méthodes existantes et largement utilisées. Par exemple, le filtrage collaboratif basé sur les personnes ou sur les objets a été largement utilisé. Maintenant, ce que nous essayons davantage, c'est d'utiliser des réseaux de neurones profonds pour améliorer l'effet de recommandation. Il existe des modèles et des algorithmes ici, qui sont en fait une scène d'applications TensorFlow.

Le service de données en bas, je tiens à souligner un point : Lorsque nous construisons un système d'IA, l'accent ne doit pas être mis sur la construction d'un modèle, mais sur les ensembles de données et l'architecture des données. Celui-ci est le plus important.

Questions et réponses intelligentes

En fait, nous pouvons comprendre la réponse intelligente aux questions comme un robot de discussion commun. Pour cette pièce, en pratique, nous pouvons directement rechercher par mot-clé, vous la renvoyer statiquement, et utiliser le moteur de recherche pour vous faire un retour. Essentiellement, cette époque n'est pas une question et une réponse intelligentes, mais une recherche documentaire. Plus tard, quel genre de situation s'appelle une question et une réponse intelligentes ?

La réponse intelligente aux questions n'est pas simplement basée sur des mots-clés, elle peut comprendre ce que je veux dire par cette phrase.

En plus de connaître les résultats, il a une fonction très importante, qui est de comprendre ce que vous dites. Il s'agit d'une technologie : le traitement du langage naturel. Par conséquent, dans la réponse intelligente aux questions, en plus d'un examen connexe, nous devons également effectuer un traitement du langage naturel.

De plus, pour le client, en plus du texte, notre apport peut également inclure la voix, et la récupération d'images ; ainsi vos idées deviendront particulièrement nombreuses. À l'heure actuelle, ce domaine est un bon domaine de développement de l'intelligence artificielle. Et ce chatbot que nous avons fait, en fait, son modèle est essentiellement fait avec TensorFlow.

Utiliser TensorFlow pour créer une réponse intelligente aux questions pour les entreprises, quels sont les avantages ?

À l'heure actuelle, en fait, nous avons de nombreuses solutions liées au cloud, connexes et générales. Mais pour l'industrie, la réponse aux questions intelligentes verticales n'est pas un problème que les questions intelligentes générales peuvent résoudre. Par exemple, une industrie a beaucoup de jargon, et ce jargon n'est pas souvent mentionné, donc à cet égard, pour les entreprises, elle construira une question-réponse intelligente appartenant à sa propre industrie verticale, qui peut rapidement se servir, comme service après-vente. Lorsque l'utilisateur a un problème avec le produit et a besoin d'un service après-vente, le robot peut être utile à ce moment-là, et il n'est pas nécessaire de mettre à 100% beaucoup de personnel du service client pour répondre aux questions.

problèmes de production

Dans le processus de développement d'un projet d'intelligence artificielle, TensorFlow n'est qu'un cadre pour vous. Il implémente des algorithmes associés et vous offre une API conviviale, vous permettant de créer divers réseaux de neurones et d'effectuer diverses formations. À cet égard, il s'agit plutôt de la familiarité ou des connaissances de base des langages de programmation. Par exemple, qu'est-ce qu'une fonction de perte et qu'est-ce qu'une descente de gradient. Ce type de connaissances détaillées au niveau de la programmation sera mentionné en détail dans les sessions de formation ultérieures. Les problèmes mentionnés ici concernent davantage l'ensemble du projet, car puisque nous appliquons TensorFlow au projet et construisons un projet d'intelligence artificielle, ce n'est certainement pas pour jouer, mais en espérant l'utiliser pour résoudre des problèmes de production.

Ce chapitre va donc parler de l'exploration des données dont j'ai parlé plus tôt. Très tôt, nous avons constaté que le lac de données que nous avons construit manquait de capacités d'exploration de données. Un lac de données contient des pétaoctets de données, mais je ne peux même pas faire une recherche rapide qui gère les métadonnées. Plus tard, nous ferons un service d'exploration de données pour résoudre ce problème, réaliser diverses prévisualisations, et apporter un très bon support aux data scientists.

la gestion des fichiers

Les mots ci-dessous sont pour les petits fichiers. Tout d'abord, les données traitées par notre TensorFlow doivent être pré-régulées. C'est-à-dire que TensorFlow n'a aucun moyen d'accéder directement à l'environnement de production et d'obtenir que les données non traitées les traitent par elles-mêmes. Cette série de fonctions se produit toutes dans l'architecture Big Data, de sorte que l'architecture Big Data fournit essentiellement un bon traitement des données pour les couches d'intelligence artificielle et TensorFlow.

Dans le processus, nous rencontrerons le problème des petits fichiers. Par exemple, j'ai des dizaines de milliards de fichiers, alors que nous avons déjà rencontré des dizaines de milliards de fichiers dans le lac de données. À l'heure actuelle, il est confronté au problème d'un grand nombre de fichiers et de petits fichiers. Pour ce type de traitement de fichier, nous avons généralement plusieurs scénarios.

La première est que s'il s'agit d'un fichier statique, tel que mes données, il y a tellement de dizaines de millions de fichiers importés dans un lot, et il se peut qu'il n'y ait plus d'entrée continue, alors le moyen le plus simple est de compresser. Il existe de nombreuses façons de compresser, pour différentes pratiques, telles que Hadoop a sa propre façon de séquencer un fichier.

En plus de cette méthode, il existe un deuxième scénario de traitement des données, qui sera appliqué dans le cas d'une saisie de données en temps réel. Par exemple, mes données continuent d'arriver, et chaque fois qu'elles arrivent, c'est un petit fichier. S'il continue d'arriver, il n'est pas approprié d'utiliser la compression statique à ce stade, car les données continuent d'arriver. Vous pourriez pousser 101kb à 110kb, mais cela n'a pas beaucoup de sens. Donc, pour cette situation, nous avons précédemment conçu un système dans le lac de données appelé petit système de fichiers. Il est utilisé pour intercepter toutes les demandes de données, et après avoir enregistré de petits fichiers, il y a un thread d'arrière-plan indépendant en arrière-plan, dédié à faire quelque chose - faire de la compression en arrière-plan. Lorsque le nombre de vos fichiers ou une certaine fonctionnalité déclenche ce seuil, il déclenchera un thread pour compresser les petits fichiers.

Dans ce petit service de fichiers, il doit enregistrer quels fichiers sont inclus dans le fichier après avoir été compressés et où l'indexer. De cette façon, lorsque nous avons une demande d'accès à un petit fichier, la demande est d'abord interceptée par le service de petit fichier, en fonction du fichier qu'il recherche via le système de gestion pour voir où il se trouve, puis obtenir le gros fichier et extrayez-le, puis renvoyez le petit fichier, afin que le problème d'un petit fichier puisse être résolu. Ce scénario revient sans cesse pour les fichiers, mais un petit nombre de fichiers peut être une très bonne solution.

En fait, pour les petits fichiers, il existe un autre moyen, c'est-à-dire que nous pouvons mettre de petits fichiers dans kafka, ce qui est très bien pour le traitement de petits fichiers. Cependant, Kafka a un problème qu'il ne peut pas gérer de gros fichiers, en particulier lorsque les différences de fichiers sont trop importantes, comme un ou deux K pour les petits fichiers et plusieurs G pour les gros fichiers, alors Kafka est fondamentalement aveuglé.

Mentionné plus tôt est que nous traitons un petit nombre de dossiers. Voici le problème du nombre de fichiers que nous avons rencontrés - jusqu'à 10 milliards ou plus.

Nous savons que pour un système de service de données qui implémente Hadoop, toutes ses métadonnées sont placées sur le NameNode. Le NameNode a une grande table de hachage utilisée pour stocker les métadonnées, qui enregistre sur quel DataNode se trouvent les métadonnées. Lorsque nous voulons accéder à un certain fichier, nous recherchons d'abord le NameNode, trouvons sur quel DataNode se trouve le fichier en fonction de la table de hachage, renvoyons l'adresse au client, et le client prend cette chose et demande ensuite le DataNode, donc cela demande de dossier Le processus est terminé.

Où est donc le goulot d'étranglement ?

Si votre DataNode stocke beaucoup d'enregistrements de fichiers, cela fera exploser toute votre mémoire. Étant donné que chaque fichier arrive, les informations d'origine occupent une certaine quantité d'espace mémoire. Bien que Hadoop prétende être basé sur des mini-ordinateurs bon marché, il souligne que la configuration de NameNode doit être supérieure à celle des autres nuds, au moins une configuration élevée, afin de garantir le bon fonctionnement de l'ensemble de votre cluster. Au début, NameNode ne fournissait que la fonction de HA. Toutes vos informations d'origine se trouvent dans un seul NameNode. Lorsque vous avez trop de fichiers, cela causera essentiellement de très gros problèmes.

Selon l'environnement de production réel, le nombre maximum de fichiers qu'un NameNode peut stocker peut être d'environ 7 millions. En ce qui concerne son problème, ce n'est pas parce que la table de hachage atteint la limite supérieure, mais parce que chaque fichier source que vous entrez, vos données occuperont une partie du stockage, et votre mémoire ne peut pas être étendue autant, donc c'est le goulot d'étranglement.

Après cela, un consortium Hadoop 2.0 a émergé. L'alliance consiste à allouer des NameNode à différents nuds, chaque nud est monté sous un répertoire différent, donc le répertoire est divisé horizontalement, je ne suis responsable que d'un seul répertoire d'un NameNode, quels sont les avantages d'une telle structure ? : ce n'est pas un fractionnement simple.

Dans tout notre processus de développement informatique, nous avons ensuite produit un microservice. En fait, cette idée consiste essentiellement à séparer votre entreprise de manière indépendante. Quel est le problème avec notre grand système ? Lorsque votre système tombe en panne, toutes vos exigences vont mal et ne sont pas accessibles. Mais lorsque nous avons divisé l'entreprise en différents sous-systèmes, après que l'un des miens soit tombé en panne, le reste de mon système a pu continuer à être utilisé.

Après la sortie de l'alliance Hadoop, nous constaterons qu'après qu'un certain dossier rencontre un problème, mes données restantes peuvent continuer à être utilisées. Alors, que faisons-nous lors de la conception des données ? Avec différents catalogues, nous pouvons être confrontés à différents scénarios commerciaux ou à différents départements. De cette façon, une fois qu'une plate-forme de données volumineuses est fournie à une entreprise, nous avons une très bonne tolérance aux pannes, c'est-à-dire que lorsqu'un problème survient dans les données d'un certain département de l'entreprise, cela n'affectera pas les autres endroits. Il est bon de faire une isolation de sécurité directement au niveau de cette couche. Pour une entreprise, il est peu probable de construire plusieurs ensembles de plates-formes Big Data. Généralement, il y aura un ensemble de plates-formes Big Data pour fournir un service unifié à l'ensemble de l'entreprise et pour construire un système d'intelligence artificielle par-dessus. les exigences des installations sont très élevées. En plus de traiter un grand nombre de fichiers, ce morceau de Hadoop fournit également cette isolation de sécurité, qui est une bonne solution à ce problème.

Comment construire un cluster

Ci-dessous, vous pouvez voir comment le cluster est construit.

Lors de l'intégration de TensorFlow et du big data, nous aurons plusieurs méthodes de traitement différentes, comme la plateforme de données et le cluster d'IA étant indépendants. Nous savons tous que l'avantage de TensorFlow est d'utiliser le GPU. Bien sûr, ce n'est pas un problème avec TensorFlow, mais pour tout framework de calcul numérique, les GPU sont les plus efficaces. Parce que le GPU est très doué pour le travail acharné et le calcul numérique pur ; et que le CPU est meilleur pour le calcul logique, alors tout le monde aura tendance à utiliser le GPU pour le calcul numérique, et le réseau neuronal profond est essentiellement une matrice différente, diverses Mathématiques pures . Par conséquent, dans l'entreprise, nous allons construire un cluster GPU unifié, qui est spécialement utilisé pour former le modèle.

De cette manière, nous sommes confrontés à un problème : lorsque nous construisons un système d'IA au niveau de l'entreprise, comment notre plate-forme de données doit-elle être intégrée et fusionnée avec le système d'IA ?

Nous pouvons être complètement indépendants, une plateforme de données, un système d'IA. Nous pouvons également déployer ensemble des systèmes d'IA et des systèmes de données. C'est le processeur que nous déployons sur le même serveur, ainsi que les éléments liés aux services de données. Lorsque nous calculons, notre modèle est formé sur le GPU et les données sont traitées ailleurs, qui sont intégrées dans un ensemble. Il y a donc deux modes de déploiement, un indépendant et un intégré, quel est le meilleur ? Certainement le meilleur d'un. Pourquoi?

Parce que pour l'indépendance, si nous sommes indépendants, cela signifie que même si les données sont distribuées et peuvent être obtenues rapidement, mais vous avez inévitablement une action suffle, vous devez extraire les données de différents nuds vers un nud, puis retirer ces données. et transmettez-le au système d'IA, et laissez-le s'entraîner dans le GPU. Il semble qu'à l'heure actuelle, si nous avons une bande passante et des performances de calcul très élevées, ce n'est pas un problème, mais au cours de notre utilisation, nous constaterons qu'un meilleur moyen est de le combiner.

L'avantage de ceci est que, tout d'abord, nous avons mentionné plus tôt que Tensorflow prend en charge la distribution de modèles. Je peux m'entraîner sur différents nuds. Les données se trouvent sur la plate-forme Big Data, elles ont une distribution de données et Tensorflow prend en charge les données de chargement direct directement à partir de systèmes de fichiers distribués tels que hdfs. Quel est le meilleur arrangement dans une telle situation ?

Notre modèle est formé de manière distribuée. Lors de la formation sur le nud actuel, les données du nud actuel sont directement chargées. De cette façon, toute la bande passante du réseau est directement enregistrée et la formation est effectuée directement sur le nud actuel. C'est notre situation idéale, c'est donc aussi la meilleure façon de vivre le déploiement de tous les clusters en un seul.

Bien entendu, cela peut être partiellement ajusté en fonction de l'environnement objectif des différentes productions lors du processus de mise en uvre, de sorte que ce type de problème ne peut généralement être rencontré que sur site et expliqué sur place. Mais pour la construction de clusters, nous avons ces deux méthodes.

TensorFlow sur Spark

J'ai mentionné plus tôt que Tensorflow a une distribution de modèle. En fait, TensorFlow peut également prendre en charge l'exécution ultérieure sur Spark, c'est-à-dire TensorFlow On Spark. Pour cela, en fait, l'idée est ce que j'ai mentionné plus tôt : je ne fais que déplacer le calcul, et je n'ai pas du tout besoin de déplacer les données. Puisque je veux former un modèle, je peux simplement déplacer le modèle que j'ai formé sur les données. Ainsi, l'intégralité de TensorFlow peut s'exécuter dans le cluster Spark.

Si nous l'exécutons en production auparavant, cet effet n'est pas très bon. Tout d'abord, vous exécutez TensorFlow dans Spark, qui est autonome. Étant donné que Spark lui-même est distribué, si TensorFlow est à nouveau distribué, il y aura un problème lorsque les deux distributions se chevaucheront. Ainsi, dans ce scénario, TensorFlow s'exécute en fait indépendamment sur un seul plan d'exécuteur Spark. De cette façon, il génère plusieurs modèles, et finalement il calculera le meilleur modèle et l'utilisera à nouveau. C'est juste qu'il y a une validation croisée distribuée dans ce processus pour rendre tous les processus de test-train-validation plus généraux et améliorer notre vitesse tout au long du processus de formation du modèle.

débogage

Lorsque nous développons TensorFlow ou d'autres architectures d'IA, nous sommes tous confrontés à un problème : le débogage. En fait, pas seulement en IA, si nous faisons du développement général, en faisant du multi-threading, le débogage est aussi une chose très difficile. Et nous faisons maintenant de l'IA, TensorFlow, qui peut être une formation distribuée, et peut également lire des données de manière distribuée. Il devient plus difficile de déboguer lorsque les deux sont empilés de manière distribuée.

Pour TensorFlow, nous ne pouvons avoir qu'un seul Tensorboard au début. Nous exportons le graphique de calcul et utilisons Tensorboard pour voir quel est le graphique de calcul de l'ensemble du modèle et comment les variables changent. Y aura-t-il des problèmes avec ce changement ? Cet aspect surveille notre processus de formation.

De plus, TFDBG a été proposé après 1.0. Cette méthode de débogage peut en fait nous aider à effectuer un traitement sous forme de points d'arrêt, mais comme nous l'avons mentionné précédemment, TensorFlow prend en charge l'entraînement distribué des modèles. Dans ce débogage, l'entraînement multithread distribué deviendra particulièrement difficile. . Donc une fois qu'on utilise DBG, il abolit en fait votre entraînement distribué et tire directement votre entraînement distribué dans un entraînement synchrone actuel. Sinon, vous vous entraînerez en parallèle sous multi-threading. En fait, le débogage de cette manière sera particulièrement difficile. Et ces deux manières sont quelques-unes des façons dont TensorFlow effectue le débogage. Il y en a très peu, et bien que cette pièce semble avoir cette fonction, c'est en fait un problème très difficile que nous avons rencontré au cours du processus de développement. Fondamentalement, il y aura de nombreux problèmes de débogage, qui ne sont pas si fluides.

test

Enfin, c'est le test. Qu'il s'agisse d'intelligence artificielle ou de big data, tester cette partie est en réalité particulièrement un casse-tête. Tout d'abord, nos tests de big data et d'intelligence artificielle sont différents des tests traditionnels.

Pour les tests traditionnels, notre sortie est fixe. Il suffit de définir AC ou d'écrire des tests unitaires pour s'assurer que la sortie est correcte. Mais en termes de big data, nous n'avons aucun moyen d'écrire un test pour dire comment ce modèle AC doit être écrit. De plus, pour le Big Data, nous n'avons aucun moyen de prédéfinir l'AC. Par exemple, si nous entraînons un téraoctet de données ou un Po de données via le big data et l'intelligence artificielle, et calculons finalement une valeur, comment prouver que la valeur calculée est correcte ? Dans la mesure où nous pouvons être aussi simples qu'un scénario, nous accumulons les données de TP, et calculons finalement une valeur, alors comment prouver que notre valeur est correcte ?

Il est peu probable que nous calculions manuellement un par un, c'est donc également un problème auquel sont confrontés les systèmes d'IA et les mégadonnées, c'est-à-dire comment testons-nous nos systèmes d'IA. Pour cette pièce, nous avons plusieurs tentatives, mais à l'heure actuelle, il n'y a pas de méthode de réglage finale, c'est-à-dire que nous pouvons prouver cette chose, ce test de fonctionnement est correct.

Le dernier est l'acceptation. Lorsque nous réalisons ce type de projet, nous sommes confrontés à des scénarios d'acceptation. Nous avons formé le modèle, comment définissons-nous cela ? Par exemple, si nous formons un modèle et disons qu'il a un taux de réussite de 90 %, comment pouvons-nous prouver notre taux de réussite de 90 % et comment pouvons-nous convaincre les autres qu'il est de 90 % ? Par conséquent, la coopération et l'acceptation des tests mentionnées ci-dessus sont en fait des problèmes auxquels nous avons été confrontés tout au long du processus de développement. Il faut dire qu'à l'heure actuelle, il n'y a pas de solution particulièrement bonne qui puisse bien prouver cette chose.

C'est tout pour le moment. Merci d'avoir regardé. Si vous avez des questions, vous pouvez poser des questions liées à des sujets connexes. Le cours d'aujourd'hui ira à cet endroit. Merci pour le prochain cours. Certains cours connexes, tout le monde est invité à regarder , Merci!

"Classe d'application avancée TensorFlow et Neural Network Algorithm" est sur le point de commencer !

La semaine prochaine, la formation TensorFlow hébergée par ThoughtWorks Tong Da et Bai Fachuan sera lancée sur mooc.ai pour prêcher systématiquement aux étudiants.

Avez-vous toujours souhaité qu'un ancien pilote puisse ouvrir la voie ? C'est une bonne opportunité.

uvres de pensée

Tutor ThoughtWorks est la première société de conseil en informatique au monde, partenaire d'ONU Femmes et Enfants et de l'Organisation mondiale de la santé. Basée à Chicago, elle compte 42 bureaux dans 15 pays à travers le monde.

En 2012, ThoughtWorks s'est classé devant Google et Facebook comme l'entreprise la plus difficile à interviewer au monde.

En 2016, ThoughtWorks a battu le peloton en remportant le prix des "Meilleurs employeurs pour les femmes en technologie" dans le monde.

Présentation de la formation :

De débutant à avancé, théorique + pratique, une compréhension approfondie de TensorFlow !

Ce cours est destiné aux développeurs d'apprentissage en profondeur et enseigne comment utiliser TensorFlow pour résoudre des problèmes spécifiques tels que la reconnaissance d'images et l'analyse de texte. Le cours s'étend sur 10 semaines, à partir des principes de TensorFlow et des compétences pratiques de base, et enseigne aux étudiants étape par étape comment créer CNN, l'encodage automatique, RNN, GAN et d'autres modèles sur TensorFlow, et enfin maîtriser un ensemble de TensorFlow. majors de développement d'apprentissage en profondeur Compétence.

Les deux enseignants, Tong Da et Bai Fachuan, sont des experts techniques seniors de ThoughtWorks et ont une riche expérience dans la construction de plateformes de mégadonnées et le développement de systèmes d'apprentissage en profondeur.

Heure de début : 25 avril (mardi), tous les mardis et jeudis soirs de 20h00 à 21h00

Durée du cours : 20 heures au total, réparties sur 10 semaines, 2 fois par semaine, 1 heure par cours.

Adresse du cours :

Cours en ligne, ouvert sur rendez-vous !

Samsung note10 aura quatre version? Exactement comme ligne Looks de mil 9 Galaxy A70
Précédent
La première fois! Le propriétaire de donner une bannière « haute main » médecins Shu re-enfants Hôpital du deuxième lot de clinique externe de la maladie particulière, il
Prochain
l'enfer bleu champignons minces, en regardant ce drame ont le cur à vouloir mourir
premier téléphone 5G Corée du Sud Chine journal, Galaxy S105G est apparu à Hong Kong: mise à niveau interne et externe
Meiguzhongcuo, Bitcoin effondrement, les prix du pétrole ont chuté trader qui se cache derrière les coulisses?
OPPO layout 5G publier assistant intelligent Breeno, la création d'un milliard de yuans l'an prochain « plan de gravité » pour les développeurs
A partir d'aujourd'hui, Nintendo Points d'or pour compenser le coût du contenu numérique
Après le jeu d'échecs Xie Jun: Avec échecs aident les enfants à réaliser la sagesse de la vie
vente hebdomadaire GOG: « Regardez Burning Man », pour seulement 14 yuans
Entretien avec frais Lone Star: Voulez-vous jouer comme ce film « In the Mood for Love »
Ce sont ces innovateurs sans repos, pour le devenir film de bonne mine
Grand écran + A12 cool, mais 5W "charge rapide" iPhone XS Max expérience vulnérables
Mary portait des nouilles instantanées tête embrassant les jeunes acteurs ont également forcé à perdre du poids, ce que Louis Koo ont fait dans l'équipage « Les gens miaou étoiles »?
OPPO Trouvez l'expérience de la caméra X: la jeunesse pittoresque Suiyueruge écrire un monde coloré vie colorée