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!
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.
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.
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.
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.
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.
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.
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:
Hay dos métodos disponibles. Puedes elegir el que se adapte a tu preferencia:
Haga clic en el botón JupyterLab que se muestra a continuación.
La página redirigirá a JupyterLab; desde allí, puede hacer clic en "Terminal" para ingresar.
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.
Luego, establezca la conexión a través del terminal.
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
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).
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:
Al abrir la URL, si muestra un error 404, no te preocupes. Simplemente agregue el sufijo /dolphinscheduler/ui a la URL:
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.
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.
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.
Puede hacer clic en el botón ejecutar a continuación para ejecutar los flujos de trabajo correspondientes.
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. .
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.
Los parámetros de inicio son los siguientes:
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:
Inicie el flujo de trabajo directamente ejecutando el flujo de trabajo de entrenamiento y seleccionando los parámetros predeterminados.
Haga clic derecho en la tarea correspondiente para ver los registros, como se muestra a continuación:
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.
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:
Si tiene datos en un campo específico, puede apuntar a sus propios datos, el formato de datos es el siguiente:
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:
Para detener el entrenamiento, puede hacer clic en el botón de detener, lo que liberará la memoria GPU utilizada para el entrenamiento.
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.
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:
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:
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".
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:
En los registros, encontrará un enlace al que se puede acceder públicamente, como:
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!
¡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!
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.
También publicado aquí .