paint-brush
Cómo entrenar su propio modelo de ChatGPT privado para el costo de un café Starbuckspor@zhoujieguang
2,947 lecturas
2,947 lecturas

Cómo entrenar su propio modelo de ChatGPT privado para el costo de un café Starbucks

por Zhou Jieguang12m2023/06/18
Read on Terminal Reader

Demasiado Largo; Para Leer

Con el costo de una taza de Starbucks y dos horas de su tiempo, puede tener su propio modelo capacitado de código abierto a gran escala.
featured image - Cómo entrenar su propio modelo de ChatGPT privado para el costo de un café Starbucks
Zhou Jieguang HackerNoon profile picture
0-item
1-item
2-item


Con el costo de una taza de Starbucks y dos horas de su tiempo, puede tener su propio modelo capacitado de código abierto a gran escala. El modelo se puede ajustar de acuerdo con diferentes direcciones de datos de entrenamiento para mejorar varias habilidades, como médica, programación , comercio de acciones y consejos amorosos, haciendo que su modelo a gran escala sea más "comprensivo" con usted. ¡Intentemos entrenar un modelo a gran escala de código abierto potenciado por DolphinScheduler de código abierto!

Introducción

La democratización de ChatGPT

Sin duda, el nacimiento de ChatGPT nos ha llenado de anticipación por el futuro de la IA. Su expresión sofisticada y su poderosa capacidad de comprensión del lenguaje han asombrado al mundo. Sin embargo, debido a que ChatGPT se proporciona como un software como servicio (SaaS), los problemas de fugas de privacidad personal y la seguridad de los datos corporativos son preocupaciones para todos los usuarios y empresas. Están surgiendo cada vez más modelos a gran escala de código abierto, lo que hace posible que las personas y las empresas tengan sus propios modelos. Sin embargo, comenzar, optimizar y usar modelos a gran escala de código abierto tiene altas barreras de entrada, lo que dificulta que todos puedan usarlos fácilmente. Para abordar esto, usamos Apache DolphinScheduler, que brinda soporte con un solo clic para entrenar, ajustar e implementar modelos a gran escala de código abierto. Esto permite que todos puedan entrenar sus propios modelos a gran escala utilizando sus datos a un costo muy bajo y con experiencia técnica.

¿Para quién? — Cualquiera frente a una pantalla

Nuestro objetivo no es solo que los ingenieros de IA profesionales, sino que cualquier persona interesada en GPT disfrute de la alegría de tener un modelo que los "entienda" mejor. Creemos que todos tienen el derecho y la capacidad de dar forma a su propio asistente de IA. El flujo de trabajo intuitivo de Apache DolphinScheduler lo hace posible. Como beneficio adicional, Apache DolphinScheduler es una herramienta de programación de inteligencia artificial y big data con más de 10,000 estrellas en GitHub. Es un proyecto de alto nivel bajo Apache Software Foundation, lo que significa que puede usarlo de forma gratuita y modificar el código sin preocuparse por problemas comerciales.


Si usted es un experto de la industria que busca entrenar un modelo con sus propios datos, o un entusiasta de la IA que desea comprender y explorar el entrenamiento de modelos de aprendizaje profundo, nuestro flujo de trabajo le brindará servicios convenientes. Resuelve pasos complejos de preprocesamiento, entrenamiento de modelos y optimización, y solo requiere de 1 a 2 horas de operaciones simples, más 20 horas de tiempo de ejecución para construir un modelo a gran escala de ChatGPT más "comprensivo".

¡Así que comencemos este viaje mágico! Llevemos el futuro de la IA a todos.

Solo tres pasos para crear un ChatGPT que te “entienda” mejor

  1. Alquile una tarjeta GPU a bajo costo equivalente a un nivel 3090
  2. Iniciar DolphinScheduler
  3. Haga clic en el flujo de trabajo de capacitación y el flujo de trabajo de implementación en la página de DolphinScheduler y experimente directamente su ChatGPT

Preparación de un host con una tarjeta gráfica 3090

Primero, necesita una tarjeta gráfica 3090. Si tiene una computadora de escritorio, puede usarla directamente. Si no, hay muchos hosts en alquiler con GPU en línea. Aquí usamos AutoDL como ejemplo para aplicar. Abra https://www.autodl.com/home , regístrese e inicie sesión. Después de eso, puede elegir el servidor correspondiente en el mercado de potencia informática de acuerdo con los pasos 1, 2 y 3 que se muestran en la pantalla.

Fuente de la imagen: imagen del propio autor


Aquí, se recomienda elegir la tarjeta gráfica RTX 3090, que ofrece una alta relación costo-rendimiento. Después de las pruebas, se descubrió que una o dos personas pueden usar el RTX 3090 para tareas en línea. Si desea velocidades de entrenamiento y respuesta más rápidas, puede optar por una tarjeta gráfica más potente. El entrenamiento una vez toma aproximadamente 20 horas, mientras que la prueba requiere alrededor de 2 a 3 horas. Con un presupuesto de 40 yuanes, puede hacerlo fácilmente.

Espejo

Haga clic en el espejo de la comunidad y luego ingrese WhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521 en el cuadro rojo a continuación. Puede seleccionar la imagen como se muestra a continuación. Actualmente, solo está disponible la versión V1. En el futuro, a medida que se lancen nuevas versiones, podrá elegir la última.

Fuente de la imagen: imagen del propio autor


Si necesita entrenar el modelo varias veces, se recomienda ampliar la capacidad del disco duro a alrededor de 100 GB.


Después de crearlo, espere a que se complete la barra de progreso que se muestra en la siguiente imagen.

Iniciar DolphinScheduler

Para implementar y depurar su propio modelo a gran escala de código abierto en la interfaz, debe iniciar el software DolphinScheduler y debemos realizar el siguiente trabajo de configuración:

Para acceder al servidor

Hay dos métodos disponibles. Puedes elegir el que se adapte a tu preferencia:

  1. Inicie sesión a través de JupyterLab (para no programadores):

Haga clic en el botón JupyterLab que se muestra a continuación.

Fuente de la imagen: imagen del propio autor


La página redirigirá a JupyterLab; desde allí, puede hacer clic en "Terminal" para ingresar.

Fuente de la imagen: imagen del propio autor


2. Iniciar sesión a través de la Terminal (para codificadores):

Podemos obtener el comando de conexión SSH desde el botón que se muestra en la siguiente imagen.

Fuente de la imagen: imagen del propio autor


Luego, establezca la conexión a través del terminal.

Fuente de la imagen: imagen del propio autor


Importar los metadatos de DolphinScheduler

En DolphinScheduler, todos los metadatos se almacenan en la base de datos, incluidas las definiciones de flujo de trabajo, las configuraciones del entorno, la información de inquilinos, etc. Para que los usuarios puedan ver estos flujos de trabajo cuando se inicia DolphinScheduler, podemos importar directamente los metadatos de flujo de trabajo predefinidos copiándolos. de la pantalla


Modifique el script para importar datos a MySQL:

Usando la terminal, navegue hasta el siguiente directorio:

cd apache-dolphinscheduler-3.1.5-bin


Ejecute el comando: vim import_ds_metadata.sh para abrir el archivo import_ds_metadata.sh . El contenido del archivo es el siguiente:



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


Reemplace xxx.xxx.xxx.x y xxxx con los valores de configuración relevantes de una base de datos MySQL en su red pública (puede solicitar una en Alibaba Cloud, Tencent Cloud o instalar una usted mismo). Luego ejecuta:

bash import_ds_metadata.sh


Después de la ejecución, si está interesado, puede verificar los metadatos correspondientes en la base de datos (conéctese a MySQL y vea, omita este paso si no está familiarizado con el código).

Fuente de la imagen: imagen del propio autor


Iniciar DolphinScheduler

En la línea de comandos del servidor, abra el siguiente archivo y modifique la configuración para conectar DolphinScheduler con la base de datos previamente importada:


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


Modifique la configuración relevante en la sección de la base de datos y deje otras secciones sin cambios. Cambie los valores de 'HOST' y 'PASSWORD' a los valores de configuración de la base de datos importada, es decir, xxx.xxx.xxx.x y 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"......


Después de configurar, ejecute (también en este directorio /root/apache-dolphinscheduler-3.1.5-bin):

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


Una vez ejecutado, podemos verificar los registros usando tail -200f standalone-server/logs/dolphinscheduler-standalone.log . ¡En este punto, se lanza oficialmente DolphinScheduler!


Después de iniciar el servicio, podemos hacer clic en “Servicios personalizados” en la consola de AutoDL (resaltado en rojo) para ser redirigido a una URL:

Fuente de la imagen: imagen del propio autor


Al abrir la URL, si muestra un error 404, no te preocupes. Simplemente agregue el sufijo /dolphinscheduler/ui a la URL:

Fuente de la imagen: imagen del propio autor

El módulo AutoDL abre el puerto 6006. Después de configurar el puerto de DolphinScheduler en 6006, puede acceder a él a través del punto de entrada provisto. Sin embargo, debido a la redirección de URL, es posible que encuentre un error 404. En tales casos, debe completar la URL manualmente.



Credenciales de acceso:

Nombre de usuario: admin

Contraseña: dolphinscheduler123


Después de iniciar sesión, haga clic en "Gestión de proyectos" para ver el proyecto predefinido llamado "vicuña". Haga clic en “vicuña” para ingresar al proyecto.

Fuente de la imagen: imagen del propio autor


Capacitación e implementación de modelos grandes de código abierto

Definición de flujo de trabajo

Al ingresar al proyecto Vicuna, verá tres flujos de trabajo: Capacitación, Implementación y Kill_Service. Exploremos sus usos y cómo configurar modelos grandes y entrenar sus datos.

Fuente de la imagen: imagen del propio autor


Puede hacer clic en el botón ejecutar a continuación para ejecutar los flujos de trabajo correspondientes.

Fuente de la imagen: imagen del propio autor


Capacitación

Al hacer clic en el flujo de trabajo de entrenamiento, verá dos definiciones. Uno es para ajustar el modelo a través de Lora (principalmente usando alpaca-lora, https://github.com/tloen/alpaca-lora ), y el otro es fusionar el modelo entrenado con el modelo base para obtener el modelo final. .

Fuente de la imagen: imagen del propio autor


El flujo de trabajo tiene los siguientes parámetros (aparece después de hacer clic en ejecutar):


  • base_model: El modelo base, que se puede elegir y descargar según sus necesidades. Los modelos grandes de código abierto son solo para fines de aprendizaje y experiencia. El valor predeterminado actual es TheBloke/vicuna-7B-1.1-HF.
  • data_path: la ruta de sus datos de entrenamiento personalizados y datos específicos del dominio, por defecto es /root/demo-data/llama_data.json.
  • lora_path: La ruta para guardar los pesos Lora entrenados, /root/autodl-tmp/vicuna-7b-lora-weight.
  • output_path: la ruta de guardado del modelo final después de fusionar el modelo base y los pesos de Lora; anótelo, ya que será necesario para la implementación.
  • num_epochs: Parámetro de entrenamiento, el número de épocas de entrenamiento. Se puede establecer en 1 para la prueba, normalmente se establece en 3~10.
  • cutoff_len: longitud máxima del texto, el valor predeterminado es 1024.
  • micro_batch_size: Tamaño del lote.

Fuente de la imagen: imagen del propio autor


Desplegar

El flujo de trabajo para implementar modelos grandes (principalmente usando FastChat, https://github.com/lm-sys/FastChat ). Primero invocará kill_service para eliminar el modelo implementado, luego iniciará secuencialmente el controlador, agregará el modelo y luego abrirá el servicio web de Gradio.

Fuente de la imagen: imagen del propio autor


Los parámetros de inicio son los siguientes:

Fuente de la imagen: imagen del propio autor


  • modelo: Ruta del modelo, puede ser un ID de modelo de Huggingface o la ruta del modelo entrenada por nosotros, es decir, la ruta de salida del flujo de trabajo de entrenamiento anterior. El valor predeterminado es TheBloke/vicuna-7B-1.1-HF. Si se usa el valor predeterminado, implementará directamente el modelo vicuña-7b.

matar_servicio

Este flujo de trabajo se usa para eliminar el modelo implementado y liberar la memoria de la GPU. Este flujo de trabajo no tiene parámetros y puede ejecutarlo directamente. Si necesita detener el servicio implementado (por ejemplo, cuando necesita volver a entrenar el modelo o cuando no hay suficiente memoria de GPU), puede ejecutar directamente el flujo de trabajo kill_service para eliminar el servicio implementado.


Después de pasar por algunos ejemplos, su implementación estará completa. Ahora echemos un vistazo a la operación práctica:

Ejemplo de operación de modelo grande

  1. Entrenamiento de un modelo grande

Inicie el flujo de trabajo directamente ejecutando el flujo de trabajo de entrenamiento y seleccionando los parámetros predeterminados.

Fuente de la imagen: imagen del propio autor


Haga clic derecho en la tarea correspondiente para ver los registros, como se muestra a continuación:

Fuente de la imagen: imagen del propio autor


También puede ver el estado de la tarea y los registros en el panel de instancias de la tarea en la parte inferior izquierda de la barra lateral. Durante el proceso de entrenamiento, puede monitorear el progreso revisando los registros, incluidos los pasos de entrenamiento actuales, las métricas de pérdida, el tiempo restante, etc. Hay una barra de progreso que indica el paso actual, donde paso = (tamaño de datos * época) / lote tamaño.

Fuente de la imagen: imagen del propio autor


Una vez completada la capacitación, los registros tendrán el siguiente aspecto:

Fuente de la imagen: imagen del propio autor


Actualización de sus datos de entrenamiento personalizados

Nuestros datos predeterminados están en /root/demo-data/llama_data.json . La fuente de datos actual es Huatuo, un modelo médico ajustado con datos médicos chinos. Sí, nuestro ejemplo es la formación de un médico de familia:

Fuente de la imagen: imagen del propio autor


Si tiene datos en un campo específico, puede apuntar a sus propios datos, el formato de datos es el siguiente:


Un JSON por línea, y el significado del campo es:

  • instrucción ****: Instrucción a dar al modelo.
  • entrada: Entrada.
  • resultado: resultado esperado del modelo.

Por ejemplo:

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


Tenga en cuenta que puede fusionar los campos de instrucción y de entrada en un solo campo de instrucción. El campo de entrada también se puede dejar vacío.


Al entrenar, modifique el parámetro data_path para ejecutar sus propios datos.


Nota:


Durante la primera ejecución del entrenamiento, el modelo base se obtendrá de la ubicación especificada, como TheBloke/vicuna-7B-1.1-HF. Habrá un proceso de descarga, así que espere a que se complete la descarga. La elección de este modelo la determina el usuario, y también puede optar por descargar otros modelos grandes de código abierto (siga las licencias correspondientes al usarlos).


Debido a problemas de red, la descarga del modelo base puede fallar a la mitad de la ejecución del primer entrenamiento. En tales casos, puede hacer clic en la tarea fallida y elegir volver a ejecutarla para continuar con el entrenamiento. El funcionamiento se muestra a continuación:

Fuente de la imagen: imagen del propio autor


Para detener el entrenamiento, puede hacer clic en el botón de detener, lo que liberará la memoria GPU utilizada para el entrenamiento.

Flujo de trabajo de implementación

En la página de definición del flujo de trabajo, haga clic en el flujo de trabajo de implementación para ejecutarlo e implementar el modelo.

Fuente de la imagen: imagen del propio autor


Si no ha entrenado su propio modelo, puede ejecutar el flujo de trabajo de implementación con los parámetros predeterminados TheBloke/vicuna-7B-1.1-HF para implementar el modelo vicuna-7b , como se muestra en la imagen a continuación:

Fuente de la imagen: imagen del propio autor


Si ha entrenado un modelo en el paso anterior, ahora puede implementar su modelo. Después de la implementación, puede experimentar su propio modelo grande. Los parámetros de inicio son los siguientes, donde debe completar la output_path del modelo del paso anterior:

Fuente de la imagen: imagen del propio autor


A continuación, ingresemos la instancia de flujo de trabajo implementada. Haga clic en la instancia de flujo de trabajo y luego haga clic en la instancia de flujo de trabajo con el prefijo "implementar".

Fuente de la imagen: imagen del propio autor

Haga clic derecho y seleccione "refresh_gradio_web_service" para ver los registros de tareas y encontrar la ubicación de nuestro enlace de modelo grande.


El funcionamiento se muestra a continuación:

Fuente de la imagen: imagen del propio autor



En los registros, encontrará un enlace al que se puede acceder públicamente, como:

Fuente de la imagen: imagen del propio autor


Aquí hay dos enlaces. No se puede acceder al enlace 0.0.0.0:7860 porque AutoDL solo abre el puerto 6006, que ya se usa para dolphinscheduler. Puede acceder directamente al enlace debajo, como [https://81c9f6ce11eb3c37a4.gradio.live.](https://81c9f6ce11eb3c37a4.gradio.live.)


Tenga en cuenta que este enlace puede cambiar cada vez que implemente, por lo que debe encontrarlo nuevamente en los registros.


¡Una vez que ingrese el enlace, verá la página de conversación de su propio ChatGPT!

Fuente de la imagen: imagen del propio autor


Fuente de la imagen: imagen del propio autor


¡Sí! ¡Ahora tienes tu propio ChatGPT, y sus datos solo te sirven a ti!


Y solo gastaste menos del costo de una taza de café~~


¡Anímate y experimenta tu propio ChatGPT privado!

Resumen

En este mundo basado en datos y orientado a la tecnología, tener un modelo ChatGPT dedicado tiene un valor incalculable. Con el avance de la inteligencia artificial y el aprendizaje profundo, nos encontramos en una era en la que se pueden dar forma a asistentes de IA personalizados. Capacitar e implementar su propio modelo de ChatGPT puede ayudarnos a comprender mejor la IA y cómo está transformando nuestro mundo.


En resumen, entrenar e implementar un modelo de ChatGPT por su cuenta puede ayudarlo a proteger la seguridad y la privacidad de los datos, cumplir con los requisitos comerciales específicos, ahorrar en costos de tecnología y automatizar el proceso de capacitación utilizando herramientas de flujo de trabajo como DolphinScheduler. También le permite cumplir con las leyes y regulaciones locales. Por lo tanto, entrenar e implementar un modelo de ChatGPT por su cuenta es una opción que vale la pena considerar.


Notas importantes:

  • Seguridad y privacidad de los datos: al usar ChatGPT a través de los servicios públicos de API, es posible que tenga dudas sobre la seguridad y la privacidad de los datos. Esta es una preocupación válida ya que sus datos pueden transmitirse a través de la red. Al entrenar e implementar el modelo por su cuenta, puede asegurarse de que sus datos se almacenen y procesen solo en su propio dispositivo o servidor alquilado, lo que garantiza la seguridad y privacidad de los datos.
  • Conocimiento específico del dominio: para organizaciones o individuos con requisitos comerciales específicos, entrenar su propio modelo ChatGPT garantiza que el modelo tenga el conocimiento más reciente y relevante relacionado con su negocio. Independientemente de su dominio comercial, un modelo específicamente capacitado para sus necesidades comerciales será más valioso que un modelo genérico.
  • Costo de inversión: el uso del modelo ChatGPT de OpenAI puede generar ciertos costos. De manera similar, si desea entrenar e implementar el modelo por su cuenta, también debe invertir recursos e incurrir en costos de tecnología. Por ejemplo, puede experimentar la depuración de modelos grandes por tan solo 40 yuanes, pero si planea ejecutarlo a largo plazo, se recomienda comprar una tarjeta gráfica Nvidia RTX 3090 o alquilar servidores en la nube. Por lo tanto, debe sopesar los pros y los contras y elegir la solución que mejor se adapte a sus circunstancias específicas.
  • DolphinScheduler: al usar el flujo de trabajo de Apache DolphinScheduler, puede automatizar todo el proceso de capacitación, lo que reduce en gran medida la barrera técnica. Incluso si no tiene un amplio conocimiento de los algoritmos, puede entrenar con éxito su propio modelo con la ayuda de tales herramientas. Además de admitir la capacitación de modelos grandes, DolphinScheduler también admite la programación de big data y la programación de aprendizaje automático, lo que lo ayuda a usted y a su personal no técnico a manejar fácilmente el procesamiento de big data, la preparación de datos, la capacitación de modelos y la implementación de modelos. Además, es de código abierto y de uso gratuito.
  • Restricciones legales y reglamentarias en modelos grandes de código abierto: DolphinScheduler es solo una herramienta de flujo de trabajo visual de IA y no proporciona ningún modelo grande de código abierto. Al usar y descargar modelos grandes de código abierto, debe tener en cuenta las diferentes restricciones de uso asociadas con cada modelo y cumplir con las licencias de código abierto respectivas. Los ejemplos dados en este artículo son solo para propósitos de experiencia y aprendizaje personal. Cuando se utilizan modelos grandes, es importante garantizar el cumplimiento de las licencias de modelos de código abierto. Además, diferentes países tienen diferentes regulaciones estrictas con respecto al almacenamiento y procesamiento de datos. Cuando utilice modelos grandes, debe personalizar y ajustar el modelo para cumplir con las normas y políticas legales específicas de su ubicación. Esto puede incluir el filtrado específico de los resultados del modelo para cumplir con las regulaciones locales de privacidad y manejo de información confidencial.


También publicado aquí .