From 508acdeb88325a20c6bf47b696cefc56ae8215f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=BC=E6=AC=A3?= Date: Thu, 21 Dec 2023 10:37:27 +0800 Subject: [PATCH] add openai version requirement (openai<1.0) --- README.md | 12 ++++++------ README_CN.md | 12 ++++++------ README_ES.md | 12 ++++++------ README_FR.md | 12 ++++++------ README_JA.md | 12 ++++++------ 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index be7781a..ec6c019 100644 --- a/README.md +++ b/README.md @@ -643,7 +643,7 @@ Full-parameter finetuning requires updating all parameters in the whole training ```bash # Distributed training. We do not provide single-GPU training script as the insufficient GPU memory will break down the training. -sh finetune/finetune_ds.sh +bash finetune/finetune_ds.sh ``` Remember to specify the correct model name or path, the data path, as well as the output directory in the shell scripts. Another thing to notice is that we use DeepSpeed ZeRO 3 in this script. If you want to make changes, just remove the argument `--deepspeed` or make changes in the DeepSpeed configuration json file based on your requirements. Additionally, this script supports mixed-precision training, and thus you can use `--bf16 True` or `--fp16 True`. Remember to use DeepSpeed when you use fp16 due to mixed precision training. Empirically we advise you to use bf16 to make your training consistent with our pretraining and alignment if your machine supports bf16, and thus we use it by default. @@ -652,9 +652,9 @@ Similarly, to run LoRA, use another script to run as shown below. Before you sta ```bash # Single GPU training -sh finetune/finetune_lora_single_gpu.sh +bash finetune/finetune_lora_single_gpu.sh # Distributed training -sh finetune/finetune_lora_ds.sh +bash finetune/finetune_lora_ds.sh ``` In comparison with full-parameter finetuning, LoRA ([paper](https://arxiv.org/abs/2106.09685)) only updates the parameters of adapter layers but keeps the original large language model layers frozen. This allows much fewer memory costs and thus fewer computation costs. @@ -669,9 +669,9 @@ To run Q-LoRA, directly run the following script: ```bash # Single GPU training -sh finetune/finetune_qlora_single_gpu.sh +bash finetune/finetune_qlora_single_gpu.sh # Distributed training -sh finetune/finetune_qlora_ds.sh +bash finetune/finetune_qlora_ds.sh ``` For Q-LoRA, we advise you to load our provided quantized model, e.g., Qwen-7B-Chat-Int4. You **SHOULD NOT** use the bf16 models. Different from full-parameter finetuning and LoRA, only fp16 is supported for Q-LoRA. For single-GPU training, we have to use DeepSpeed for mixed-precision training due to our observation of errors caused by torch amp. Besides, for Q-LoRA, the troubles with the special tokens in LoRA still exist. However, as we only provide the Int4 models for chat models, which means the language model has learned the special tokens of ChatML format, you have no worry about the layers. Note that the layers of the Int4 model should not be trainable, and thus if you introduce special tokens in your training, Q-LoRA might not work. @@ -898,7 +898,7 @@ python cli_demo.py We provide methods to deploy local API based on OpenAI API (thanks to @hanpenggit). Before you start, install the required packages: ```bash -pip install fastapi uvicorn openai pydantic sse_starlette +pip install fastapi uvicorn "openai<1.0" pydantic sse_starlette ``` Then run the command to deploy your API: diff --git a/README_CN.md b/README_CN.md index 9a1ecd4..7ca7bfc 100644 --- a/README_CN.md +++ b/README_CN.md @@ -636,7 +636,7 @@ pip install peft deepspeed ```bash # 分布式训练。由于显存限制将导致单卡训练失败,我们不提供单卡训练脚本。 -sh finetune/finetune_ds.sh +bash finetune/finetune_ds.sh ``` 尤其注意,你需要在脚本中指定正确的模型名称或路径、数据路径、以及模型输出的文件夹路径。在这个脚本中我们使用了DeepSpeed ZeRO 3。如果你想修改这个配置,可以删除掉`--deepspeed`这个输入或者自行根据需求修改DeepSpeed配置json文件。此外,我们支持混合精度训练,因此你可以设置`--bf16 True`或者`--fp16 True`。在使用fp16时,请使用DeepSpeed支持混合精度训练。经验上,如果你的机器支持bf16,我们建议使用bf16,这样可以和我们的预训练和对齐训练保持一致,这也是为什么我们把默认配置设为它的原因。 @@ -645,9 +645,9 @@ sh finetune/finetune_ds.sh ```bash # 单卡训练 -sh finetune/finetune_lora_single_gpu.sh +bash finetune/finetune_lora_single_gpu.sh # 分布式训练 -sh finetune/finetune_lora_ds.sh +bash finetune/finetune_lora_ds.sh ``` 与全参数微调不同,LoRA ([论文](https://arxiv.org/abs/2106.09685)) 只更新adapter层的参数而无需更新原有语言模型的参数。这种方法允许用户用更低的显存开销来训练模型,也意味着更小的计算开销。 @@ -662,9 +662,9 @@ sh finetune/finetune_lora_ds.sh ```bash # 单卡训练 -sh finetune/finetune_qlora_single_gpu.sh +bash finetune/finetune_qlora_single_gpu.sh # 分布式训练 -sh finetune/finetune_qlora_ds.sh +bash finetune/finetune_qlora_ds.sh ``` 我们建议你使用我们提供的Int4量化模型进行训练,即Qwen-7B-Chat-Int4。请**不要使用**非量化模型!与全参数微调以及LoRA不同,Q-LoRA仅支持fp16。注意,由于我们发现torch amp支持的fp16混合精度训练存在问题,因此当前的单卡训练Q-LoRA必须使用DeepSpeed。此外,上述LoRA关于特殊token的问题在Q-LoRA依然存在。并且,Int4模型的参数无法被设为可训练的参数。所幸的是,我们只提供了Chat模型的Int4模型,因此你不用担心这个问题。但是,如果你执意要在Q-LoRA中引入新的特殊token,很抱歉,我们无法保证你能成功训练。 @@ -890,7 +890,7 @@ python cli_demo.py 我们提供了OpenAI API格式的本地API部署方法(感谢@hanpenggit)。在开始之前先安装必要的代码库: ```bash -pip install fastapi uvicorn openai pydantic sse_starlette +pip install fastapi uvicorn "openai<1.0" pydantic sse_starlette ``` 随后即可运行以下命令部署你的本地API: diff --git a/README_ES.md b/README_ES.md index b7f02a2..633e263 100644 --- a/README_ES.md +++ b/README_ES.md @@ -645,7 +645,7 @@ Full-parameter finetuning requires updating all parameters in the whole training ```bash # Entrenamiento distribuido. No proporcionamos un script de entrenamiento para una sola GPU, ya que la insuficiente memoria de la GPU interrumpiría el entrenamiento. -sh finetune/finetune_ds.sh +bash finetune/finetune_ds.sh ``` Recuerde especificar el nombre correcto del modelo o ruta, la ruta de datos, así como el directorio de salida en los scripts de shell. Otra cosa a notar es que usamos DeepSpeed ZeRO 3 en este script. Si desea realizar cambios, basta con eliminar el argumento `--deepspeed` o realizar cambios en el archivo json de configuración de DeepSpeed en función de sus necesidades. Además, este script soporta entrenamiento de precisión mixta, por lo que puedes usar `--bf16 True` o `--fp16 True`. Recuerde utilizar DeepSpeed cuando utilice fp16 debido al entrenamiento de precisión mixta. @@ -655,9 +655,9 @@ Para ejecutar LoRA, utilice otro script para ejecutar como se muestra a continua ```bash # Single GPU training -sh finetune/finetune_lora_single_gpu.sh +bash finetune/finetune_lora_single_gpu.sh # Distributed training -sh finetune/finetune_lora_ds.sh +bash finetune/finetune_lora_ds.sh ``` En comparación con el ajuste fino de parámetros completos, LoRA ([artículo](https://arxiv.org/abs/2106.09685)) sólo actualiza los parámetros de las capas adaptadoras, pero mantiene congeladas las grandes capas originales del modelo de lenguaje. Esto permite muchos menos costes de memoria y, por tanto, de computación. @@ -672,9 +672,9 @@ Para ejecutar Q-LoRA, ejecute directamente el siguiente script: ```bash # Entrenamiento con una sola GPU -sh finetune/finetune_qlora_single_gpu.sh +bash finetune/finetune_qlora_single_gpu.sh # Entrenamiento distribuida -sh finetune/finetune_qlora_ds.sh +bash finetune/finetune_qlora_ds.sh ``` Para Q-LoRA, le aconsejamos que cargue nuestro modelo cuantizado proporcionado, por ejemplo, Qwen-7B-Chat-Int4. **NO DEBE** utilizar los modelos bf16. A diferencia del finetuning de parámetros completos y LoRA, sólo fp16 es compatible con Q-LoRA. Para el entrenamiento con una sola GPU, tenemos que utilizar DeepSpeed para el entrenamiento de precisión mixta debido a nuestra observación de errores causados por el amplificador de antorcha. Además, para Q-LoRA, los problemas con los tokens especiales en LoRA siguen existiendo. Sin embargo, como sólo proporcionamos los modelos Int4 para los modelos de chat, lo que significa que el modelo lingüístico ha aprendido los tokens especiales del formato ChatML, no hay que preocuparse por las capas. Ten en cuenta que las capas del modelo Int4 no deben ser entrenables, por lo que si introduces tokens especiales en tu entrenamiento, Q-LoRA podría no funcionar. @@ -849,7 +849,7 @@ python cli_demo.py Proporcionamos métodos para desplegar la API local basada en la API de OpenAI (gracias a @hanpenggit). Antes de empezar, instala los paquetes necesarios: ```bash -pip install fastapi uvicorn openai "pydantic>=2.3.0" sse_starlette +pip install fastapi uvicorn "openai<1.0" pydantic sse_starlette ``` A continuación, ejecute el comando para desplegar su API: diff --git a/README_FR.md b/README_FR.md index d552a4c..77e85e2 100644 --- a/README_FR.md +++ b/README_FR.md @@ -647,7 +647,7 @@ Le finetuning de tous les paramètres nécessite la mise à jour de tous les par ```bash # Distributed training. We do not provide single-GPU training script as the insufficient GPU memory will break down the training. -sh finetune/finetune_ds.sh +bash finetune/finetune_ds.sh ``` N'oubliez pas de spécifier le nom ou le chemin d'accès au modèle, le chemin d'accès aux données, ainsi que le répertoire de sortie dans les scripts shell. Une autre chose à noter est que nous utilisons DeepSpeed ZeRO 3 dans ce script. Si vous voulez faire des changements, il suffit de supprimer l'argument `--deepspeed` ou de faire des changements dans le fichier json de configuration de DeepSpeed en fonction de vos besoins. De plus, ce script supporte l'entraînement en précision mixte, et donc vous pouvez utiliser `--bf16 True` ou `--fp16 True`. N'oubliez pas d'utiliser DeepSpeed lorsque vous utilisez fp16 en raison de l'entraînement de précision mixte. Empiriquement, nous vous conseillons d'utiliser bf16 pour rendre votre apprentissage cohérent avec notre pré-entraînement et notre alignement si votre machine supporte bf16, et nous l'utilisons donc par défaut. @@ -656,9 +656,9 @@ Pour exécuter LoRA, utilisez un autre script à exécuter comme indiqué ci-des ```bash # Single GPU training -sh finetune/finetune_lora_single_gpu.sh +bash finetune/finetune_lora_single_gpu.sh # Distributed training -sh finetune/finetune_lora_ds.sh +bash finetune/finetune_lora_ds.sh ``` Par rapport au finetuning de tous les paramètres, LoRA ([paper](https://arxiv.org/abs/2106.09685)) ne met à jour que les paramètres des couches d'adaptateurs, tout en gelant les couches originales du grand modèle de langage. Cela permet de réduire considérablement les coûts de mémoire et donc les coûts de calcul. @@ -673,9 +673,9 @@ Pour lancer Q-LoRA, exécutez directement le script suivant : ```bash # Single GPU training -sh finetune/finetune_qlora_single_gpu.sh +bash finetune/finetune_qlora_single_gpu.sh # Distributed training -sh finetune/finetune_qlora_ds.sh +bash finetune/finetune_qlora_ds.sh ``` Pour Q-LoRA, nous vous conseillons de charger le modèle quantifié que nous fournissons, par exemple Qwen-7B-Chat-Int4. Vous **NE DEVRIEZ PAS** utiliser les modèles bf16. Contrairement au finetuning de tous les paramètres et à la LoRA, seul le modèle fp16 est pris en charge pour la Q-LoRA. Pour l'entraînement sur un seul GPU, nous devons utiliser DeepSpeed pour l'entraînement en précision mixte en raison de notre observation des erreurs causées par torch amp. En outre, pour Q-LoRA, les problèmes avec les jetons spéciaux dans LoRA existent toujours. Cependant, comme nous ne fournissons que les modèles Int4 pour les modèles de chat, ce qui signifie que le modèle de langage a appris les tokens spéciaux du format ChatML, vous n'avez pas à vous soucier des couches. Notez que les couches du modèle Int4 ne doivent pas être entraînables, et donc si vous introduisez des tokens spéciaux dans votre entraînement, Q-LoRA risque de ne pas fonctionner. @@ -851,7 +851,7 @@ python cli_demo.py Nous fournissons des méthodes pour déployer une API locale basée sur l'API OpenAI (merci à @hanpenggit). Avant de commencer, installez les paquets nécessaires: ```bash -pip install fastapi uvicorn openai "pydantic>=2.3.0" sse_starlette +pip install fastapi uvicorn "openai<1.0" pydantic sse_starlette ``` Exécutez ensuite la commande pour déployer votre API: diff --git a/README_JA.md b/README_JA.md index f5d8598..826010e 100644 --- a/README_JA.md +++ b/README_JA.md @@ -642,7 +642,7 @@ pip install -r requirements_finetune.txt ```bash # 分散トレーニング。GPUメモリが不足するとトレーニングが破綻するため、シングルGPUのトレーニングスクリプトは提供していません。 -sh finetune/finetune_ds.sh +bash finetune/finetune_ds.sh ``` シェルスクリプトでは、正しいモデル名またはパス、データパス、出力ディレクトリを指定することを忘れないでください。このスクリプトでは DeepSpeed ZeRO 3 を使用しています。変更したい場合は、引数 `--deepspeed` を削除するか、要件に基づいて DeepSpeed 設定 json ファイルを変更してください。さらに、このスクリプトは混合精度のトレーニングに対応しており、`--bf16 True` または `--fp16 True` を使用することができます。fp16を使用する場合は、混合精度のトレーニングのため、DeepSpeedを使用することを忘れないこと。経験的に、あなたのマシンがbf16をサポートしている場合、私たちのプリトレーニングとアライメントを整合させるためにbf16を使用することをお勧めします。 @@ -651,9 +651,9 @@ sh finetune/finetune_ds.sh ```bash # シングルGPUトレーニング -sh finetune/finetune_lora_single_gpu.sh +bash finetune/finetune_lora_single_gpu.sh # 分散トレーニング -sh finetune/finetune_lora_ds.sh +bash finetune/finetune_lora_ds.sh ``` LoRA ([論文](https://arxiv.org/abs/2106.09685)) は、フルパラメーターによるファインチューニングと比較して、adapterのパラメーターを更新するだけで、元の大きな言語モデル層は凍結されたままである。そのため、メモリコストが大幅に削減でき、計算コストも削減できる。 @@ -668,9 +668,9 @@ Q-LoRAを実行するには、以下のスクリプトを直接実行してく ```bash # シングルGPUトレーニング -sh finetune/finetune_qlora_single_gpu.sh +bash finetune/finetune_qlora_single_gpu.sh # 分散トレーニング -sh finetune/finetune_qlora_ds.sh +bash finetune/finetune_qlora_ds.sh ``` Q-LoRAについては、弊社が提供する量子化モデル、例えばQwen-7B-Chat-Int4をロードすることをお勧めします。BF16モデルは使用し**ない**でください!フルパラメータ・ファインチューニングやLoRAとは異なり、Q-LoRAではfp16のみがサポートされる。シングルGPUのトレーニングでは、トーチアンプによるエラーが観測されたため、混合精度のトレーニングにはDeepSpeedを使用する必要がある。また、Q-LoRAの場合、LoRAの特殊トークンの問題が残っています。しかし、Q-LoRAではチャットモデルとしてInt4モデルのみを提供しており、言語モデルはChatML形式の特殊トークンを学習しているため、レイヤーの心配はありません。なお、Int4モデルのレイヤーは学習できないはずなので、学習で特殊なトークンを導入すると、Q-LoRAが動作しなくなる可能性があります。 @@ -888,7 +888,7 @@ python cli_demo.py OpenAI API をベースにローカルAPIをデプロイする方法を提供する(@hanpenggit に感謝)。始める前に、必要なパッケージをインストールしてください: ```bash -pip install fastapi uvicorn openai "pydantic>=2.3.0" sse_starlette +pip install fastapi uvicorn "openai<1.0" pydantic sse_starlette ``` それから、API をデプロイするコマンドを実行します: