paint-brush
Comment former votre propre modèle ChatGPT privé pour le coût d'un café Starbuckspar@zhoujieguang
3,158 lectures
3,158 lectures

Comment former votre propre modèle ChatGPT privé pour le coût d'un café Starbucks

par Zhou Jieguang12m2023/06/18
Read on Terminal Reader

Trop long; Pour lire

Avec le coût d'une tasse de Starbucks et de deux heures de votre temps, vous pouvez posséder votre propre modèle à grande échelle open source formé.
featured image - Comment former votre propre modèle ChatGPT privé pour le coût d'un café Starbucks
Zhou Jieguang HackerNoon profile picture
0-item
1-item
2-item


Avec le coût d'une tasse de Starbucks et de deux heures de votre temps, vous pouvez posséder votre propre modèle à grande échelle open source formé. Le modèle peut être affiné selon différentes directions de données de formation pour améliorer diverses compétences, telles que la médecine, la programmation , la négociation d'actions et les conseils amoureux, ce qui rend votre modèle à grande échelle plus "compréhensif" de vous. Essayons de former un modèle open source à grande échelle renforcé par l'open source DolphinScheduler !

Introduction

La démocratisation de ChatGPT

La naissance de ChatGPT nous a sans aucun doute remplis d'anticipation pour l'avenir de l'IA. Son expression sophistiquée et sa puissante capacité de compréhension du langage ont émerveillé le monde. Cependant, étant donné que ChatGPT est fourni en tant que logiciel en tant que service (SaaS), les problèmes de fuites de données personnelles et de sécurité des données d'entreprise sont des préoccupations pour chaque utilisateur et entreprise. De plus en plus de modèles open source à grande échelle émergent, permettant aux particuliers et aux entreprises d'avoir leurs propres modèles. Cependant, la mise en route, l'optimisation et l'utilisation de modèles open source à grande échelle présentent des barrières élevées à l'entrée, ce qui rend difficile pour tout le monde de les utiliser facilement. Pour résoudre ce problème, nous utilisons Apache DolphinScheduler, qui fournit une assistance en un clic pour la formation, le réglage et le déploiement de modèles open source à grande échelle. Cela permet à chacun de former ses propres modèles à grande échelle à partir de ses données à très faible coût et avec une expertise technique.

C'est pour qui? — Toute personne devant un écran

Notre objectif n'est pas seulement pour les ingénieurs professionnels de l'IA, mais pour toute personne intéressée par GPT de profiter de la joie d'avoir un modèle qui les "comprend" mieux. Nous pensons que chacun a le droit et la capacité de façonner son propre assistant IA. Le flux de travail intuitif d'Apache DolphinScheduler rend cela possible. En prime, Apache DolphinScheduler est un outil de planification de Big Data et d'IA avec plus de 10 000 étoiles sur GitHub. Il s'agit d'un projet de haut niveau sous Apache Software Foundation, ce qui signifie que vous pouvez l'utiliser gratuitement et modifier le code sans vous soucier des problèmes commerciaux.


Que vous soyez un expert du secteur cherchant à former un modèle avec vos propres données ou un passionné d'IA souhaitant comprendre et explorer la formation de modèles d'apprentissage en profondeur, notre flux de travail vous fournira des services pratiques. Il résout les étapes complexes de prétraitement, de formation de modèle et d'optimisation, et ne nécessite que 1 à 2 heures d'opérations simples, plus 20 heures de temps d'exécution pour créer un modèle à grande échelle ChatGPT plus « compréhensif ».

Alors commençons ce voyage magique ! Apportons l'avenir de l'IA à tous.

Seulement trois étapes pour créer un ChatGPT qui vous "comprend" mieux

  1. Louez une carte GPU à petit prix équivalent à un niveau 3090
  2. Démarrer DolphinScheduler
  3. Cliquez sur le workflow de formation et le workflow de déploiement sur la page DolphinScheduler et découvrez directement votre ChatGPT

Préparation d'un hôte avec une carte graphique 3090

Tout d'abord, vous avez besoin d'une carte graphique 3090. Si vous avez un ordinateur de bureau, vous pouvez l'utiliser directement. Sinon, il existe de nombreux hôtes à louer avec GPU en ligne. Ici, nous utilisons AutoDL comme exemple à appliquer. Ouvrez https://www.autodl.com/home , enregistrez-vous et connectez-vous. Après cela, vous pouvez choisir le serveur correspondant sur le marché de la puissance de calcul en suivant les étapes 1, 2 et 3 affichées à l'écran.

Source de l'image : la propre photo de l'auteur


Ici, il est recommandé de choisir la carte graphique RTX 3090, qui offre un rapport qualité-prix élevé. Après des tests, il a été constaté qu'une à deux personnes peuvent utiliser le RTX 3090 pour des tâches en ligne. Si vous souhaitez un entraînement et des vitesses de réponse plus rapides, vous pouvez opter pour une carte graphique plus puissante. Une fois, la formation prend environ 20 heures, tandis que les tests nécessitent environ 2 à 3 heures. Avec un budget de 40 yuans, vous pouvez facilement le faire.

Miroir

Cliquez sur le miroir de la communauté, puis entrez WhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521 la case rouge ci-dessous. Vous pouvez sélectionner l'image comme indiqué ci-dessous. Actuellement, seule la version V1 est disponible. À l'avenir, à mesure que de nouvelles versions seront publiées, vous pourrez choisir la dernière.

Source de l'image : la propre photo de l'auteur


Si vous devez former le modèle plusieurs fois, il est recommandé d'étendre la capacité du disque dur à environ 100 Go.


Après l'avoir créé, attendez que la barre de progression affichée dans l'image suivante se termine.

Démarrer DolphinScheduler

Afin de déployer et de déboguer votre propre modèle open source à grande échelle sur l'interface, vous devez démarrer le logiciel DolphinScheduler, et nous devons effectuer le travail de configuration suivant :

Pour accéder au serveur

Deux méthodes sont disponibles. Vous pouvez choisir celui qui vous convient :

  1. Connectez-vous via JupyterLab (pour les non-codeurs):

Cliquez sur le bouton JupyterLab ci-dessous.

Source de l'image : la propre photo de l'auteur


La page redirigera vers JupyterLab ; à partir de là, vous pouvez cliquer sur "Terminal" pour entrer.

Source de l'image : la propre photo de l'auteur


2. Connexion via Terminal (pour les codeurs) :

Nous pouvons obtenir la commande de connexion SSH à partir du bouton illustré dans l'image suivante.

Source de l'image : la propre photo de l'auteur


Ensuite, établissez la connexion via le terminal.

Source de l'image : la propre photo de l'auteur


Importer les métadonnées de DolphinScheduler

Dans DolphinScheduler, toutes les métadonnées sont stockées dans la base de données, y compris les définitions de flux de travail, les configurations d'environnement, les informations sur les locataires, etc. depuis l'écran.


Modifiez le script d'import de données dans MySQL :

À l'aide du terminal, accédez au répertoire suivant :

cd apache-dolphinscheduler-3.1.5-bin


Exécutez la commande : vim import_ds_metadata.sh pour ouvrir le fichier import_ds_metadata.sh . Le contenu du fichier est le suivant :



Set variables

Hostname

HOST="xxx.xxx.xxx.x"


UsernameUSERNAME="root"PasswordPASSWORD="xxxx"PortPORT=3306Database to import intoDATABASE="ds315_llm_test"SQL filenameSQL_FILE="ds315_llm.sql"mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD -e "CREATE DATABASE $DATABASE;"mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD $DATABASE < $SQL_FILE


Remplacez xxx.xxx.xxx.x et xxxx par les valeurs de configuration pertinentes d'une base de données MySQL sur votre réseau public (vous pouvez en demander une sur Alibaba Cloud, Tencent Cloud ou en installer une vous-même). Exécutez ensuite :

bash import_ds_metadata.sh


Après l'exécution, si vous êtes intéressé, vous pouvez vérifier les métadonnées correspondantes dans la base de données (connectez-vous à MySQL et visualisez, en sautant cette étape si vous n'êtes pas familier avec le code).

Source de l'image : la propre photo de l'auteur


Démarrer DolphinScheduler

Dans la ligne de commande du serveur, ouvrez le fichier suivant et modifiez la configuration pour connecter DolphinScheduler à la base de données précédemment importée :


/root/apache-dolphinscheduler-3.1.5-bin/bin/env/dolphinscheduler_env.sh


Modifiez la configuration appropriée dans la section de la base de données et laissez les autres sections inchangées. Remplacez les valeurs de 'HOST' et 'PASSWORD' par les valeurs de configuration de la base de données importée, c'est-à-dire xxx.xxx.xxx.x et xxxx :


export DATABASE=mysqlexport SPRING_PROFILES_ACTIVE=${DATABASE}export SPRING_DATASOURCE_URL="jdbc:mysql://HOST:3306/ds315_llm_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false"export SPRING_DATASOURCE_USERNAME="root"export SPRING_DATASOURCE_PASSWORD="xxxxxx"......


Après la configuration, exécutez (également dans ce répertoire /root/apache-dolphinscheduler-3.1.5-bin) :

bash ./bin/dolphinscheduler-daemon.sh start standalone-server


Une fois exécuté, nous pouvons vérifier les journaux en utilisant tail -200f standalone-server/logs/dolphinscheduler-standalone.log . À ce stade, DolphinScheduler est officiellement lancé !


Après avoir démarré le service, nous pouvons cliquer sur "Services personnalisés" dans la console AutoDL (surligné en rouge) pour être redirigé vers une URL :

Source de l'image : la propre photo de l'auteur


Lors de l'ouverture de l'URL, si elle affiche une erreur 404, ne vous inquiétez pas. Ajoutez simplement le suffixe /dolphinscheduler/ui à l'URL :

Source de l'image : la propre photo de l'auteur

Le module AutoDL ouvre le port 6006. Après avoir configuré le port de DolphinScheduler sur 6006, vous pouvez y accéder via le point d'entrée fourni. Cependant, en raison de la redirection d'URL, vous pouvez rencontrer une erreur 404. Dans de tels cas, vous devez compléter l'URL manuellement.



Identifiants de connexion :

Nom d'utilisateur : admin

Mot de passe : dolphinscheduler123


Une fois connecté, cliquez sur « Gestion de projet » pour voir le projet prédéfini nommé « vigogne ». Cliquez sur « vigogne » pour entrer dans le projet.

Source de l'image : la propre photo de l'auteur


Formation et déploiement de grands modèles open source

Définition du flux de travail

En entrant dans le projet Vicuna, vous verrez trois workflows : Formation, Déploiement et Kill_Service. Explorons leurs utilisations et comment configurer de grands modèles et former vos données.

Source de l'image : la propre photo de l'auteur


Vous pouvez cliquer sur le bouton Exécuter ci-dessous pour exécuter les workflows correspondants.

Source de l'image : la propre photo de l'auteur


Entraînement

En cliquant sur le workflow de formation, vous verrez deux définitions. L'une consiste à affiner le modèle via Lora (principalement en utilisant alpaca-lora, https://github.com/tloen/alpaca-lora ), et l'autre consiste à fusionner le modèle formé avec le modèle de base pour obtenir le modèle final .

Source de l'image : la propre photo de l'auteur


Le flux de travail a les paramètres suivants (apparaît après avoir cliqué sur exécuter) :


  • base_model : Le modèle de base, qui peut être choisi et téléchargé selon vos besoins. Les grands modèles open source sont uniquement à des fins d'apprentissage et d'expérience. La valeur par défaut actuelle est TheBloke/vicuna-7B-1.1-HF.
  • data_path : le chemin de vos données d'entraînement personnalisées et de vos données spécifiques au domaine, par défaut, est /root/demo-data/llama_data.json.
  • lora_path : chemin d'accès pour enregistrer les poids Lora entraînés, /root/autodl-tmp/vicuna-7b-lora-weight.
  • output_path : le chemin de sauvegarde du modèle final après la fusion du modèle de base et des poids Lora, notez-le car il sera nécessaire pour le déploiement.
  • num_epochs : Paramètre d'entraînement, le nombre d'époques d'entraînement. Il peut être réglé sur 1 pour les tests, généralement réglé sur 3 ~ 10.
  • cutoff_len : longueur maximale du texte, par défaut 1024.
  • micro_batch_size : taille du lot.

Source de l'image : la propre photo de l'auteur


Déployer

Le flux de travail pour déployer de grands modèles (principalement à l'aide de FastChat, https://github.com/lm-sys/FastChat ). Il appellera d'abord kill_service pour tuer le modèle déployé, puis démarrera séquentiellement le contrôleur, ajoutera le modèle, puis ouvrira le service Web Gradio.

Source de l'image : la propre photo de l'auteur


Les paramètres de démarrage sont les suivants :

Source de l'image : la propre photo de l'auteur


  • model : chemin du modèle, il peut s'agir d'un ID de modèle Huggingface ou du chemin du modèle que nous avons formé, c'est-à-dire le chemin de sortie du flux de travail de formation ci-dessus. La valeur par défaut est TheBloke/vicuna-7B-1.1-HF. Si la valeur par défaut est utilisée, elle déploiera directement le modèle vicuna-7b.

Kill_service

Ce workflow est utilisé pour tuer le modèle déployé et libérer de la mémoire GPU. Ce workflow n'a pas de paramètres et vous pouvez l'exécuter directement. Si vous devez arrêter le service déployé (par exemple, lorsque vous devez recycler le modèle ou lorsque la mémoire GPU est insuffisante), vous pouvez exécuter directement le workflow kill_service pour arrêter le service déployé.


Après avoir parcouru quelques exemples, votre déploiement sera terminé. Voyons maintenant le fonctionnement pratique :

Exemple de fonctionnement d'un grand modèle

  1. Formation d'un grand modèle

Démarrez le flux de travail directement en exécutant le flux de travail de formation et en sélectionnant les paramètres par défaut.

Source de l'image : la propre photo de l'auteur


Cliquez avec le bouton droit sur la tâche correspondante pour afficher les journaux, comme indiqué ci-dessous :

Source de l'image : la propre photo de l'auteur


Vous pouvez également afficher l'état de la tâche et les journaux dans le panneau d'instance de tâche en bas à gauche de la barre latérale. Pendant le processus de formation, vous pouvez surveiller la progression en consultant les journaux, y compris les étapes de formation actuelles, les mesures de perte, le temps restant, etc. Il y a une barre de progression indiquant l'étape actuelle, où étape = (taille des données * époque) / lot taille.

Source de l'image : la propre photo de l'auteur


Une fois la formation terminée, les journaux ressembleront à ce qui suit :

Source de l'image : la propre photo de l'auteur


Mise à jour de vos données d'entraînement personnalisées

Nos données par défaut sont dans /root/demo-data/llama_data.json . La source de données actuelle est Huatuo, un modèle médical affiné à l'aide de données médicales chinoises. Oui, notre exemple est la formation d'un médecin de famille :

Source de l'image : la propre photo de l'auteur


Si vous avez des données dans un champ spécifique, vous pouvez pointer vers vos propres données, le format des données est le suivant :


Un JSON par ligne, et la signification du champ est :

  • instruction **** : Instruction à donner au modèle.
  • entrée : entrée.
  • output : résultat attendu du modèle.

Par exemple:

{"instruction": "calculation", "input": "1+1 equals?", "output": "2"}


Veuillez noter que vous pouvez fusionner les champs d'instruction et de saisie en un seul champ d'instruction. Le champ de saisie peut également être laissé vide.


Lors de la formation, modifiez le paramètre data_path pour exécuter vos propres données.


Note:


Lors de la première exécution de la formation, le modèle de base sera récupéré à partir de l'emplacement spécifié, tel que TheBloke/vicuna-7B-1.1-HF. Il y aura un processus de téléchargement, veuillez donc attendre la fin du téléchargement. Le choix de ce modèle est déterminé par l'utilisateur, et vous pouvez également choisir de télécharger d'autres grands modèles open source (veuillez suivre les licences pertinentes lors de leur utilisation).


En raison de problèmes de réseau, le téléchargement du modèle de base peut échouer à mi-chemin de la première exécution de la formation. Dans de tels cas, vous pouvez cliquer sur la tâche qui a échoué et choisir de la réexécuter pour continuer la formation. Le fonctionnement est illustré ci-dessous :

Source de l'image : la propre photo de l'auteur


Pour arrêter l'entraînement, vous pouvez cliquer sur le bouton d'arrêt, ce qui libérera la mémoire GPU utilisée pour l'entraînement.

Flux de travail de déploiement

Sur la page de définition du workflow, cliquez sur le workflow de déploiement pour l'exécuter et déployer le modèle.

Source de l'image : la propre photo de l'auteur


Si vous n'avez pas entraîné votre propre modèle, vous pouvez exécuter le workflow de déploiement avec les paramètres par défaut TheBloke/vicuna-7B-1.1-HF pour déployer le modèle vicuna-7b , comme illustré dans l'image ci-dessous :

Source de l'image : la propre photo de l'auteur


Si vous avez formé un modèle à l'étape précédente, vous pouvez maintenant déployer votre modèle. Après le déploiement, vous pouvez tester votre propre grand modèle. Les paramètres de démarrage sont les suivants, où vous devez renseigner le output_path du modèle de l'étape précédente :

Source de l'image : la propre photo de l'auteur


Entrons ensuite dans l'instance de workflow déployée. Cliquez sur l'instance de workflow, puis cliquez sur l'instance de workflow avec le préfixe "deploy".

Source de l'image : la propre photo de l'auteur

Faites un clic droit et sélectionnez "refresh_gradio_web_service" pour afficher les journaux de tâches et trouver l'emplacement de notre grand lien de modèle.


Le fonctionnement est illustré ci-dessous :

Source de l'image : la propre photo de l'auteur



Dans les logs, vous trouverez un lien accessible publiquement, tel que :

Source de l'image : la propre photo de l'auteur


Voici deux liens. Le lien 0.0.0.0:7860 n'est pas accessible car AutoDL n'ouvre que le port 6006, qui est déjà utilisé pour dolphinscheduler. Vous pouvez accéder directement au lien en dessous, tel que [https://81c9f6ce11eb3c37a4.gradio.live.](https://81c9f6ce11eb3c37a4.gradio.live.)


Veuillez noter que ce lien peut changer à chaque déploiement, vous devez donc le retrouver à partir des journaux.


Une fois que vous avez entré le lien, vous verrez la page de conversation de votre propre ChatGPT !

Source de l'image : la propre photo de l'auteur


Source de l'image : la propre photo de l'auteur


Oui! Vous avez maintenant votre propre ChatGPT, et ses données ne servent qu'à vous !


Et vous avez seulement dépensé moins que le coût d'une tasse de café ~~


Allez-y et découvrez votre propre ChatGPT privé !

Résumé

Dans ce monde axé sur les données et la technologie, disposer d'un modèle ChatGPT dédié a une valeur incommensurable. Avec les progrès de l'intelligence artificielle et de l'apprentissage en profondeur, nous sommes à une époque où des assistants IA personnalisés peuvent être façonnés. La formation et le déploiement de votre propre modèle ChatGPT peuvent nous aider à mieux comprendre l'IA et comment elle transforme notre monde.


En résumé, la formation et le déploiement d'un modèle ChatGPT par vous-même peuvent vous aider à protéger la sécurité et la confidentialité des données, à répondre aux exigences commerciales spécifiques, à économiser sur les coûts technologiques et à automatiser le processus de formation à l'aide d'outils de workflow tels que DolphinScheduler. Cela vous permet également de vous conformer aux lois et réglementations locales. Par conséquent, la formation et le déploiement d'un modèle ChatGPT par vous-même est une option intéressante à considérer.


Notes IMPORTANTES:

  • Sécurité et confidentialité des données : lorsque vous utilisez ChatGPT via des services d'API publics, vous pouvez avoir des inquiétudes concernant la sécurité et la confidentialité des données. Il s'agit d'une préoccupation valable car vos données peuvent être transmises sur le réseau. En formant et en déployant le modèle par vous-même, vous pouvez vous assurer que vos données sont stockées et traitées uniquement sur votre propre appareil ou sur un serveur loué, garantissant la sécurité et la confidentialité des données.
  • Connaissances spécifiques au domaine : pour les organisations ou les personnes ayant des besoins commerciaux spécifiques, la formation de votre propre modèle ChatGPT garantit que le modèle dispose des connaissances les plus récentes et les plus pertinentes liées à votre entreprise. Quel que soit votre domaine d'activité, un modèle spécifiquement formé pour vos besoins commerciaux sera plus précieux qu'un modèle générique.
  • Coût d'investissement : L'utilisation du modèle ChatGPT d'OpenAI peut entraîner certains coûts. De même, si vous souhaitez former et déployer le modèle par vous-même, vous devez également investir des ressources et supporter des coûts technologiques. Par exemple, vous pouvez déboguer de grands modèles pour aussi peu que 40 yuans, mais si vous prévoyez de l'exécuter à long terme, il est recommandé d'acheter une carte graphique Nvidia RTX 3090 ou de louer des serveurs cloud. Par conséquent, vous devez peser le pour et le contre et choisir la solution la mieux adaptée à votre situation spécifique.
  • DolphinScheduler : En utilisant le workflow d'Apache DolphinScheduler, vous pouvez automatiser l'ensemble du processus de formation, réduisant considérablement la barrière technique. Même si vous n'avez pas une connaissance approfondie des algorithmes, vous pouvez former avec succès votre propre modèle à l'aide de ces outils. En plus de prendre en charge la formation de grands modèles, DolphinScheduler prend également en charge la planification du Big Data et la planification de l'apprentissage automatique, vous aidant ainsi que votre personnel non technique à gérer facilement le traitement du Big Data, la préparation des données, la formation de modèles et le déploiement de modèles. De plus, il est open-source et gratuit à utiliser.
  • Contraintes légales et réglementaires sur les grands modèles open source : DolphinScheduler n'est qu'un outil de flux de travail visuel d'IA et ne fournit aucun grand modèle open source. Lors de l'utilisation et du téléchargement de grands modèles open source, vous devez être conscient des différentes contraintes d'utilisation associées à chaque modèle et vous conformer aux licences open source respectives. Les exemples donnés dans cet article sont uniquement à des fins d'apprentissage personnel et d'expérience. Lors de l'utilisation de modèles volumineux, il est important de garantir la conformité avec les licences de modèles open source. De plus, différents pays ont des réglementations strictes différentes concernant le stockage et le traitement des données. Lorsque vous utilisez de grands modèles, vous devez personnaliser et ajuster le modèle pour vous conformer aux réglementations et politiques légales spécifiques de votre emplacement. Cela peut inclure un filtrage spécifique des sorties du modèle pour se conformer aux réglementations locales en matière de confidentialité et de traitement des informations sensibles.


Également publié ici .