OpenAI finalmente se decidió: ¡abra oficialmente la API de ChatGPT!
Dirección de la API de ChatGPT: https://platform.openai.com/docs/guides/chat
OpenAI, el nuevo modelo de gpt-3.5-turbo,
inauguró oficialmente la API oficial de ChatGPT, abriendo una nueva puerta para los desarrolladores.
ajuste fino _
Dirección del documento oficial: API de OpenAI
Para el desempeño de ChatGPT, todos ya han sentido su increíble. Después de la prueba, cómo queremos personalizarlo para usted o para la empresa, tenemos que mencionar su función de ajuste fino.
El ajuste fino se refiere al ajuste fino con nuevos datos en un modelo ya entrenado para lograr una mejor adaptabilidad. En el campo del procesamiento del lenguaje natural, el ajuste fino se aplica principalmente a los modelos de lenguaje, generalmente sobre la base de modelos previamente entrenados, utilizando una cierta escala de nuevos conjuntos de datos para ajustar el modelo para cumplir con los requisitos de tareas específicas.
Como ejemplo, supongamos que hay un modelo de generación de texto entrenado previamente que puede generar un texto coherente dado un prefijo. Pero este modelo puede no ser adecuado para escenarios comerciales específicos, como la respuesta a preguntas médicas. En este punto, podemos usar una cierta escala de conjuntos de datos de respuesta a preguntas médicas para ajustar este modelo, de modo que pueda adaptarse mejor al escenario de respuesta a preguntas médicas y generar texto que esté más en línea con las necesidades reales.
La ventaja del ajuste fino es que no hay necesidad de entrenar un modelo desde cero, porque el modelo previamente entrenado ya tiene buenas capacidades de modelado de lenguaje y ya contiene mucho conocimiento del lenguaje. Solo necesitamos importar el conjunto de datos comerciales y entrenarlo.
pasos de ajuste
- Preparar y cargar datos de entrenamiento
- Entrena un nuevo modelo perfeccionado
- Utilice el modelo ajustado
¿Qué modelos se pueden ajustar?
Actualmente, el ajuste fino solo está disponible para el siguiente modelo base: davinci curie babbage ada text-davinci-003.
No he probado si el nuevo modelo de gpt-3.5-turbo, el último modelo de ChatGPT, admite ajustes finos.
empezar a practicar
1. preparación del entorno python3
El ajuste fino del modelo OpenAI requiere un entorno python3. (Tome como ejemplo una instalación nueva de una computadora Mac)
1.1 Actualizar cerveza primero
brew update
Tenga en cuenta que no pude ejecutarlo la primera vez, diciendo que no podía acceder al almacén de github, así que lo hice de nuevo.
1.2 Instalar python3: tenga en cuenta que el proceso de instalación es relativamente largo, lo instalé durante más de diez minutos
brew install python3
- Tenga en cuenta que el proceso de instalación es relativamente largo y me llevó más de diez minutos instalarlo. ser paciente
1.3 Continuar con la instalación de pip
Ejecutar el comando oficial en este momento informará un error de la siguiente manera:
zsh: comando no encontrado: pip
Descargar primero:
curl https://bootstrap.pypa.io/pip/get-pip.py -o get-pip.py
Usa python3 para instalar
sudo python3 get-pip.py
Verificar después de la instalación
pip -V
1.4 Instalar pandas
Este paso también es necesario, de lo contrario, se informará un error más adelante, indicando que faltan pandas.
Instalar comando:
pip install pandas
De esta forma, se realiza el trabajo de preparación y se pueden instalar los documentos oficiales de OpenAI para su funcionamiento.
2. Preparación del entorno OpenAI
2.1 Herramientas de instalación
pip install --upgrade openai
2.2 Prepara tu propio corpus
Creé un nuevo archivo 1.json en el disco duro, el contenido es el siguiente:
{"prompt": "你是谁", "completion": "我是唯一客服小助手"}
{"prompt": "你会做什么", "completion": "我能帮你解答使用唯一客服时的问题"}
2.3 Configuración de variables de entorno: debe configurar la clave de la API de OpenAI
export OPENAI_API_KEY="自己的key"
2.4 Este archivo está formateado con las herramientas de OpenAI
openai tools fine_tunes.prepare_data -f 本地的json文件路径
mi ejemplo:
openai tools fine_tunes.prepare_data -f /Users/szz/app/1.json
traducir:
analizando . .
- De acuerdo con la extensión de su archivo, proporciona un archivo de texto
- Su archivo contiene 3 pares de solicitud de finalización. En general, recomendamos al menos unos pocos cientos de ejemplos. Descubrimos que el rendimiento aumenta linealmente con cada duplicación del número de ejemplos
; la columna/clave "finalización" no debe contener cadenas vacías. Estas son las líneas: [2]
: todas las finalizaciones comienzan con el prefijo "{"prompt":"you`. La mayoría de las veces, solo debe agregar los datos de salida a la finalización sin ningún prefijo; la finalización debe comenzar con un carácter en
blanco (``). Esto tiende a dar mejores resultados debido a la tokenización que usamos. Consulte https://beta.openai.com/docs/guides/fine-tuning/preparing-your-dataset para obtener detalles
Según el análisis, tomaremos las siguientes medidas:
- [Obligatorio] Su formato "TXT" se convertirá a " JSONL"`
- [obligatorio] eliminar 1 línea en blanco para completar
- [recomendado] eliminar el prefijo "{"prompt":"you` de todas las finalizaciones [S/n]:
- [recomendado] agregar un carácter en blanco al comienzo de la finalización [ Y/ n]:
sus datos se escribirán en un nuevo archivo JSONL. Continuar [Y/n]:
Escriba el archivo modificado en `/tmp/json_prepared.jsonl`
¡Eche un vistazo!
Ahora use este archivo cuando ajuste:
> openai api fine_tunes.create -t "/tmp/jsonprepared.jsonl"
Asegúrese de incluir `stop=[""}"]` para que el texto generado termine donde se espera.
Una vez que su modelo está entrenado, toma alrededor de 2.47 minutos entrenar un modelo "curie", mientras que "ada" y "babbage" toman aún menos tiempo. Antes de ti, cada trabajo estaba en cola durante aproximadamente media hora.
Esta herramienta formateará el archivo json que proporcionó. El sufijo del archivo formateado es jsonl, y el archivo se colocará en el mismo directorio que el archivo json que proporcionó.
El contenido es:
{"prompt":"你是谁 ->","completion":" 我是唯一客服小助手\n"}
{"prompt":"你会做什么 ->","completion":" 我能帮你解答使用唯一客服时的问题\n"}
Puede ver que es ligeramente diferente del archivo original que proporcionó.
3. OpenAI comienza a entrenar
3.1 Crear un modelo ajustado
Basado en el modelo da Vinci, cree un modelo propio, solo se pueden entrenar unos pocos modelos:
ada
,babbage
,curie
,davinci
openai api fine_tunes.create -t 数据文件路径 -m 基础模型
mi ejemplo:
openai api fine_tunes.create -t /Users/szz/app/1_prepared.jsonl -m davinci
En este momento, se puede informar un error que dice que no se encontró su clave OpenAI, luego puede ejecutar el comando de exportación nuevamente
Error:
éxito:
En este momento, espere pacientemente unos minutos o unas horas, según el tamaño de su texto, el funcionario dijo que el tamaño máximo de archivo es de 1 GB.
3.2 Haga una lista de todas las tareas de ajuste
openai api fine_tunes.list
Puede ver que el estado es pendiente ~ entrenamiento. . .
3.3 Ver el estado de las tareas de ajuste
ID es el ID de la lista anterior, puede ver que se está ejecutando
openai api fine_tunes.get -i 任务ID
openai api fine_tunes.get -i ft-K2iPDoch4D3Aj2fkGATUKXeM
3.4 Formación completada
Cuando se completa la tarea, la palabra fine_tuned_model tendrá el nombre del modelo y el estado se mostrará como verde exitoso.
Puede usar este modelo más tarde y puede ver el nombre del modelo.
3.5 Modelo de uso
openai api completions.create -m 模型名称 -p 提示
Nota: Dado que el conjunto de entrenamiento es demasiado pequeño, se ha utilizado el modelo Da Vinci, por lo que el conjunto de datos entrenado no es tan útil. Le pregunté a ChatGPT y la respuesta que me dio fue la siguiente:
ChatGPT:
su conjunto de datos es muy pequeño, lo que puede ser una de las razones por las que no es fácil de usar. Un conjunto de datos de tamaño adecuado es muy importante para el ajuste fino, porque en el proceso de ajuste fino, el modelo necesita aprender cómo asignar los datos del idioma original a la representación del idioma de la tarea específica. Cuando su conjunto de datos es pequeño, el modelo puede encontrar algunos patrones irrelevantes en los datos, lo que puede generar resultados inadecuados.Además, el modelo da Vinci de OpenAI puede generar todo tipo de contenido, incluido algún contenido inapropiado. Para reducir la generación de contenido inapropiado, necesita más control sobre el proceso de generación. Puede usar algunos trucos, como proporcionar un contexto más específico al generador o adoptar algunas estrategias de generación para controlar los resultados generados.
Finalmente, puede intentar ajustar con un modelo más grande, para que el modelo pueda manejar mejor tareas complejas y datos de lenguaje, mejorando así la calidad de los resultados generados.
P: ¿Cómo proporcionar un contexto más específico al generador o adoptar alguna estrategia de generación para controlar el resultado de la generación?
Se puede proporcionar un contexto más específico proporcionando al generador más texto de entrada, que puede ser información relevante para el contenido que se va a generar. Por ejemplo, si desea generar un párrafo sobre cocina, puede proporcionar información sobre ingredientes, herramientas de cocina, métodos, etc., para que el generador pueda comprender mejor qué generar.
Hay varias formas de emplear políticas de compilación para controlar los resultados de la compilación, algunas de las cuales incluyen:
Plantillas preestablecidas: prepare algunas plantillas de generación con anticipación y controle los resultados de la generación incrustando el contenido generado en estas plantillas.
Ajuste los parámetros del generador: ajuste los parámetros del generador, como la temperatura, el método de muestreo, etc., para controlar la diversidad y precisión de los resultados generados.
Filtre los resultados generados: use algunas técnicas de procesamiento de lenguaje natural, como la extracción de palabras clave, el reconocimiento de entidades nombradas, etc., para filtrar los resultados generados y mantener el contenido que cumple con los requisitos.
4. Suplementos
4.1 Ver y probar sus propios modelos creados en PlayGroud
El modelo que entrenaste tú mismo aparecerá en esta ubicación.
4.2 Costos de capacitación
Hay una tarifa por entrenar el modelo, que se deducirá de la cuota de 18 dólares estadounidenses que se le otorga, pero siempre que su conjunto de datos no sea muy grande, el dinero deducido es muy pequeño. Deduje 0,12 dólares estadounidenses ayer. Pero cabe señalar que después de descontar el dinero o transcurridos los tres meses, tu cupo se vaciará, podrás configurar tu cuenta de pago, y luego se te otorgará un cupo de 120 dólares americanos.