Una caja de herramientas extensible, conveniente y eficiente para ajustar modelos de aprendizaje automático grandes, diseñada para ser fácil de usar, rápida, confiable y accesible para toda la comunidad.
Modelo de Lenguaje Grande para Todos. Vea nuestra visión.
- [2023-04-02] Web service is online!
- [2023-04-01] Release Chinese checkpoints in model zoo: LLaMA-7B-tuned, LLaMA-13B-tuned, LLaMA-33B-tuned.
- [2023-04-01] Release English checkpoints in model zoo: LLaMA-7B-medical, LLaMA-13B-medical, and LLaMA-33B-medical.
- [2023-03-27] Support full tuning and lora tuning for all decoder models.
- [2023-03-27] Tasked tuned model beats ChatGPT on medical domain
- [2023-03-27] Release code and checkpoints - version 0.0.1
Actualmente, nuestro servicio de descarga de checkpoints está en capacidad máxima. Hemos asignado un servidor adicional para apoyar esto. Si encuentras el error "demasiadas solicitudes HTTP", por favor espera varios minutos e intenta nuevamente. Gracias por tu comprensión. 🙏
Ofrecemos cuatro tipos de demostraciones que incluyen:
- Servicio en línea: Si no deseas ejecutar ningún código y simplemente quieres probar nuestros modelos, implementamos nuestros LLaMA-7B y LLaMA-33B ajustados con instrucciones para que puedas probarlos.
- Chatbot Colab (shell): Un chatbot interactivo basado en shell para que puedas implementar fácilmente un chatbot en Colab.
- Chatbot Colab (web): Un chatbot interactivo basado en web para que puedas implementar fácilmente tu propio chatbot en Colab.
- Implementación local: También ofrecemos una forma de implementar tu modelo/chatbot localmente, lo que significa que puedes implementar un modelo mucho más grande que los tres métodos anteriores si tienes suficientes recursos.
Bienvenido/a a nuestro servicio web. Tenemos desplegado en línea el modelo LLaMA-7B-tuned y LLaMA-33B-tuned para su vista previa. Debido al alto tráfico del sitio web, a veces puede que falle en responder. También puedes desplegar el chatbot haciendo referencia a
Local Deploy
.
Proporcionamos una demostración simple de la línea de comandos del chatbot con T4/P100/V100 GPU de Google Colab. Es importante tener en cuenta que el modelo gpt-neo-2.7b proporcionado es un modelo bastante débil, que solo admite inglés y a veces puede generar respuestas insatisfactorias. Para mejorar su rendimiento, los usuarios pueden utilizar sus propios conjuntos de datos para ajustar y obtener un modelo mejor con LMFlow. También se pueden probar otros modelos solo decodificadores disponibles en 🤗 huggingface.
./scripts/run_chatbot.sh {another-model-name}
Proporcionamos una demostración web simple del chatbot con T4/P100/V100 GPU de Google Colab. Es importante tener en cuenta que el modelo gpt-neo-2.7b proporcionado es un modelo bastante débil, que solo admite inglés y a veces puede generar respuestas insatisfactorias.
Si tienes recursos y quieres desplegar tu propio modelo localmente, te proporcionamos una forma sencilla de ejecutar un servidor Flask para lanzar la parte trasera (para proporcionar servicios adicionales a otras partes delantera) y una interfaz web interactiva (para permitirte comunicarte directamente) mediante:
cd ./service
python app.py
PubMedQA (ID) | MedQA-USMLE (OOD) | MedMCQA (ID) | Average | |
---|---|---|---|---|
Human (pass) | 60.0 | 50.0 | ||
Human (expert) | 78.0 | 87.0 | 90.0 | 85.0 |
InstructGPT 175B | 73.2 | 46.0 | 44.0 | 54.4 |
ChatGPT | 63.9 | 57.0 | 44.7 | 55.2 |
LLaMA 7B | 5.2 | 27.1 | 24.3 | 18.9 |
LLaMA 33B | 1.8 | 43.4 | 30.3 | 25.2 |
Task-tuned LLaMA 7B (Full) | 75.1 | 44.5 | 49.9 | 56.5 |
Task-tuned LLaMA 33B (LoRA) | 74.0 | 51.3 | 50.2 | 58.5 |
El rendimiento de LLaMA 33B (LoRA) se logra con solo ~16h de ajuste fino en la división de entrenamiento de PubMedQA y MedMCQA con un único servidor 8 * A100. Para obtener más rendimiento, incluidos los resultados del ajuste de instrucciones, consulta nuestra documentación.
Hemos hecho públicos los checkpoints entrenados para que todos puedan utilizarlos para un mayor entrenamiento e inferencia.
Instruct-tuned Models | Status | Base Model | Download |
---|---|---|---|
LLaMA-7B-tuned | LLaMA-7B | Google Drive | |
LLaMA-13B-tuned | LLaMA-13B | Google Drive | |
LLaMA-33B-tuned | LLaMA-33B | Google Drive | |
LLaMA-65B-tuned | LLaMA-65B | Google Drive | |
LLaMA7B-medical | LLaMA-7B | Google Drive | |
LLaMA13B-medical | LLaMA-13B | Google Drive | |
LLaMA33B-medical | LLaMA-33B | Google Drive | |
LLaMA65B-medical | LLaMA-65B | Google Drive |
Pipelines | Status |
---|---|
Task Tuning | ✅ Supported |
Instruction Tuning | ✅ Supported |
Parameter-Efficient Tuning | ✅ Supported |
Large Model Inference | ✅ Supported |
Alignment Tuning | 🔧 Developing |
Ofrecemos soporte para todos los modelos decodificadores en 🤗 huggingface. Hemos probado completamente LLaMA, GPT2, GPT-Neo, Galactica. Pronto también ofreceremos soporte para modelos codificadores.
git clone https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .
Puedes descargar fácilmente los conjuntos de datos de entrenamiento y prueba de ejemplo ejecutando:
cd data
bash download.sh all
cd -
También puedes utilizar tu propio conjunto de datos simplemente convirtiéndolo al siguiente formato:
{
"type": "text2text",
"instances": [
{
"input": "Question: The Transformer architecture [START_REF]",
"output": "N/A"
},
...
]
}
{
"type": "text_only",
"instances": [
{
"text": "Defintion: In this task, we ask you to write an answer to a question that involves events that may be stationary (not changing over time) or transient (changing over time). For example, the sentence \"he was born in the U.S.\" contains a stationary event since it will last forever; however, \"he is hungry\" contains a transient event since it will remain true for a short period of time. Note that a lot of the questions could have more than one correct answer. We only need a single most-likely answer. Please try to keep your \"answer\" as simple as possible. Concise and simple \"answer\" is preferred over those complex and verbose ones. \n Input: Question: Sentence: It's hail crackled across the comm, and Tara spun to retake her seat at the helm. \nQuestion: Will the hail storm ever end? \n Output: NA \n\n"
},
...
]
}
Puedes ejecutar scripts/run_finetune.sh
para ajustar finamente un modelo base GPT-2.
./scripts/run_finetune.sh
Si deseas proporcionar argumentos para DeepSpeed que reflejen la configuración de tu máquina, puedes pasar los argumentos correspondientes a DeepSpeed al script. Por ejemplo:
./scripts/run_finetune.sh "--num_gpus=8 --master_port 10001"
Para habilitar el ajuste fino de LoRA, puedes consultar:
./scripts/run_finetune_with_lora.sh
which can be run in similar manner.
Para obtener configuraciones detalladas, uno puede modificar estos scripts directamente. Estos scripts en realidad solo llaman al script de Python examples/finetune.py, que se puede ejecutar de la siguiente manera:
deepspeed ${deepspeed_args} \
examples/finetune.py \
--deepspeed configs/ds_config_zero3.json \
--bf16 \
--run_name finetune_with_lora \
--model_name_or_path facebook/galactica-1.3b \
--num_train_epochs 0.01 \
--learning_rate 2e-5 \
--dataset_path ${dataset_path} \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--validation_split_percentage 0 \
--logging_steps 20 \
--block_size 512 \
--do_train \
--output_dir output_models/finetune \
--overwrite_output_dir \
--ddp_timeout 72000 \
--save_steps 5000 \
--dataloader_num_workers 1
python examples/finetune.py -h
Uno puede ejecutar la evaluación directamente con un modelo existente de Hugging Face, por ejemplo, para ejecutar GPT2 large, se puede ejecutar:
./scripts/run_evaluation.sh
Para modelos ajustados finamente con LoRA, uno puede consultar:
./scripts/run_evaluation_with_lora.sh
tests
.
Esos scripts invocan los ejemplos examples/*.py
construidos sobre nuestras APIs. Para obtener más ejemplos relacionados con las APIs, uno puede consultar los métodos en el unittest tests
.
-
Primero, necesitas obtener el acceso al modelo LLaMA desde facebookresearch/llama. Descarga los checkpoints oficiales y guárdalos en ${llama-path}.
-
Segundo, convierte los checkpoints oficiales
${llama-path}
a checkpoints compatibles con HuggingFace $${llama-hf-path}
ejecutando:python ./scripts/convert_llama_weights_to_hf.py --input_dir ${llama-path} --model_size 7B --output_dir ${llama-hf-path}/llama-7b-hf
-
¡Listo! Ahora puedes establecer la ruta del checkpoint en
${llama-hf-path}/llama-7b-hf
. ¡Disfrútalo!
Puedes configurar DeepSpeed en configs. Los detalles se pueden consultar en Configuración de DeepSpeed.
Puedes ejecutar el siguiente script para descargar los checkpoints de nuestro modelo médico::
cd output_models
bash download.sh medical_ckpt
cd -
También puedes descargar directamente nuestro modelo a través del enlace de Google Drive: medical_ckpt.tar.gz
Similarly, you can run following script to download our instruction model checkpoints :
cd output_models
bash download.sh instruction_ckpt
cd -
Por supuesto, ¿podrías proporcionarme el enlace de Google Drive para que pueda ayudarte a descargar el modelo directamente: instruction_ckpt.tar.gz
Después de descargar los checkpoints del modelo, puedes reemplazar --lora_model_path
con output_models/instruction_ckpt/llama7b-lora
(ejemplo para llama-7b para instrucciones) y reemplazar --model_name_or_path
con tu modelo LLaMA convertido dentro de LMFlow/scripts/run_evaluation_with_lora.sh
y ejecutar este script de shell para reproducir el resultado.
Luego puedes verificar el rendimiento del modelo en nuestra documentación.
Por favor, consulta nuestra documentación para obtener más referencias a la API y resultados experimentales.
¡Hola! ¡Estamos emocionados de anunciar el próximo lanzamiento de nuestro repositorio de código que incluye un proceso completo de entrenamiento de LLM, permitiendo a los usuarios construir rápidamente sus propios modelos de lenguaje y entrenarlos de manera efectiva!
Nuestro repositorio de código no es solo un modelo simple; incluye todo el flujo de trabajo de entrenamiento, optimización de modelo y herramientas de prueba. Puedes usarlo para construir varios tipos de modelos de lenguaje, incluyendo modelos de conversación, modelos de pregunta-respuesta y modelos de generación de texto, entre otros.
Además, nuestro objetivo es crear una plataforma abierta y democrática de intercambio de LLM donde las personas puedan compartir sus checkpoints y experiencias para mejorar colectivamente las habilidades de la comunidad. ¡Damos la bienvenida a cualquier persona interesada en LLM a participar y unirse a nosotros en la construcción de una comunidad abierta y amigable!
Ya seas principiante o experto, creemos que puedes beneficiarte de esta plataforma. ¡Trabajemos juntos para construir una comunidad vibrante e innovadora de LLM!
Este paquete tiene como objetivo proporcionar un flujo de trabajo optimizado y fácil de usar para el ajuste de modelos grandes. Sus funcionalidades sirven como referencia y están destinadas a ser utilizadas por el usuario. Sin embargo, es importante tener en cuenta que la responsabilidad por la preparación de los datos y modelos pre-entrenados recae únicamente en el usuario. Este paquete no garantiza la precisión, integridad, aplicabilidad o legalidad de los componentes provenientes de la preparación del usuario. Los usuarios deben ser conscientes y asumir todos los riesgos y responsabilidades asociados con la preparación de los modelos y datos, y obtener asesoramiento legal, comercial y técnico antes de utilizar este paquete. El flujo de trabajo no será responsable de ningún daño directo, indirecto, especial, incidental o consecuente resultante de la preparación indebida de los datos y modelos pre-entrenados por parte del usuario.
Nuestros checkpoints, que incluyen versiones en inglés y chino, se proporcionan únicamente con fines de investigación. Los datos de entrenamiento contenidos en estos checkpoints incluyen resultados generados a partir del modelo de lenguaje ChatGPT. No respaldamos ni fomentamos la distribución o uso de estos checkpoints con fines comerciales. Los usuarios de estos checkpoints son responsables únicamente de garantizar que se utilicen correctamente y de forma apropiada.
También es crucial destacar que los resultados generados por el modelo se basan en modelos probabilísticos y no están directamente relacionados con este paquete. La precisión, confiabilidad, aplicabilidad y legalidad de los resultados no están garantizados por este paquete. Por lo tanto, los usuarios también deben ser conscientes de los riesgos y responsabilidades asociados con los resultados y buscar asesoramiento legal, comercial y técnico antes de confiar en los resultados generados por el modelo. Este paquete no será responsable de ningún daño directo, indirecto, especial, incidental o consecuente resultante de la dependencia de los resultados generados por el modelo por parte del usuario.
If you need any help, please submit a Github issue.
Si encuentras este repositorio útil, por favor considera darle ⭐ y citarlo:
@misc{lmflow,
author = {Shizhe Diao and Rui Pan and Hanze Dong and KaShun Shum and Jipeng Zhang and Wei Xiong and Tong Zhang},
title = {LMFlow: An Extensible Toolkit for Finetuning and Inference of Large Foundation Models},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://optimalscale.github.io/LMFlow/}},
}