LLaMA-Factory

07-19 173阅读

LLaMA-Factory


文章目录

    • 一、关于 LLaMA-Factory
      • 项目特色
      • 性能指标
      • 二、如何使用
        • 1、安装 LLaMA Factory
        • 2、数据准备
        • 3、快速开始
        • 4、LLaMA Board 可视化微调
        • 5、构建 Docker
          • CUDA 用户:
          • 昇腾 NPU 用户:
          • 不使用 Docker Compose 构建
            • CUDA 用户:
            • 昇腾 NPU 用户:
            • 数据卷详情
            • 6、利用 vLLM 部署 OpenAI API
            • 7、从魔搭社区下载
            • 8、使用 W&B 面板
            • 三、支持
              • 1、模型
              • 2、训练方法
              • 3、数据集
                • 预训练数据集
                • 指令微调数据集
                • 偏好数据集
                • 4、软硬件依赖
                  • 硬件依赖

                    一、关于 LLaMA-Factory

                    A WebUI for Efficient Fine-Tuning of 100+ LLMs

                    • github : https://github.com/hiyouga/LLaMA-Factory

                      Demo 视频

                      其他打开方式

                      • Colab:https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing
                      • PAI-DSW: https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory
                      • 本地机器:请见如何使用

                        项目特色

                        • 多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
                        • 集成方法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
                        • 多种精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
                        • 先进算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。
                        • 实用技巧:FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA。
                        • 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
                        • 极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。

                          性能指标

                          与 ChatGLM 官方的 P-Tuning 微调相比,LLaMA Factory 的 LoRA 微调提供了 3.7 倍的加速比,同时在广告文案生成任务上取得了更高的 Rouge 分数。结合 4 比特量化技术,LLaMA Factory 的 QLoRA 微调进一步降低了 GPU 显存消耗。

                          LLaMA-Factory


                          二、如何使用


                          1、安装 LLaMA Factory

                          git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
                          cd LLaMA-Factory
                          pip install -e ".[torch,metrics]"
                          

                          可选的额外依赖项:torch、torch-npu、metrics、deepspeed、bitsandbytes、hqq、eetq、gptq、awq、aqlm、vllm、galore、badam、qwen、modelscope、quality

                          Tip : 遇到包冲突时,可使用 pip install --no-deps -e . 解决。

                          Windows 和 昇腾 NPU 用户指南 详见:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md


                          2、数据准备

                          关于数据集文件的格式,请参考 data/README_zh.md 的内容。你可以使用 HuggingFace / ModelScope 上的数据集或加载本地数据集。

                          Note:使用自定义数据集时,请更新 data/dataset_info.json 文件。


                          3、快速开始

                          下面三行命令分别对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并。

                          llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
                          llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
                          llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml
                          

                          高级用法请参考 examples/README_zh.md(包括多 GPU 微调)。

                          Tip: 使用 llamafactory-cli help 显示帮助信息。


                          4、LLaMA Board 可视化微调

                          由 Gradio 驱动

                          llamafactory-cli webui
                          

                          5、构建 Docker


                          CUDA 用户:
                          cd docker/docker-cuda/
                          docker-compose up -d
                          docker-compose exec llamafactory bash
                          

                          昇腾 NPU 用户:
                          cd docker/docker-npu/
                          docker-compose up -d
                          docker-compose exec llamafactory bash
                          

                          不使用 Docker Compose 构建

                          CUDA 用户:
                          docker build -f ./docker/docker-cuda/Dockerfile \
                              --build-arg INSTALL_BNB=false \
                              --build-arg INSTALL_VLLM=false \
                              --build-arg INSTALL_DEEPSPEED=false \
                              --build-arg INSTALL_FLASHATTN=false \
                              --build-arg PIP_INDEX=https://pypi.org/simple \
                              -t llamafactory:latest .
                          docker run -dit --gpus=all \
                              -v ./hf_cache:/root/.cache/huggingface \
                              -v ./ms_cache:/root/.cache/modelscope \
                              -v ./data:/app/data \
                              -v ./output:/app/output \
                              -p 7860:7860 \
                              -p 8000:8000 \
                              --shm-size 16G \
                              --name llamafactory \
                              llamafactory:latest
                          docker exec -it llamafactory bash
                          

                          昇腾 NPU 用户:
                          # 根据您的环境选择镜像
                          docker build -f ./docker/docker-npu/Dockerfile \
                              --build-arg INSTALL_DEEPSPEED=false \
                              --build-arg PIP_INDEX=https://pypi.org/simple \
                              -t llamafactory:latest .
                          # 根据您的资源更改 `device`
                          docker run -dit \
                              -v ./hf_cache:/root/.cache/huggingface \
                              -v ./ms_cache:/root/.cache/modelscope \
                              -v ./data:/app/data \
                              -v ./output:/app/output \
                              -v /usr/local/dcmi:/usr/local/dcmi \
                              -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
                              -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
                              -v /etc/ascend_install.info:/etc/ascend_install.info \
                              -p 7860:7860 \
                              -p 8000:8000 \
                              --device /dev/davinci0 \
                              --device /dev/davinci_manager \
                              --device /dev/devmm_svm \
                              --device /dev/hisi_hdc \
                              --shm-size 16G \
                              --name llamafactory \
                              llamafactory:latest
                          docker exec -it llamafactory bash
                          

                          数据卷详情
                          • hf_cache:使用宿主机的 Hugging Face 缓存文件夹,允许更改为新的目录。
                          • data:宿主机中存放数据集的文件夹路径。
                          • output:将导出目录设置为该路径后,即可在宿主机中访问导出后的模型。

                            6、利用 vLLM 部署 OpenAI API

                            API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml
                            

                            Tip : API 文档请查阅 https://platform.openai.com/docs/api-reference/chat/create。


                            7、从魔搭社区下载

                            如果您在 Hugging Face 模型和数据集的下载中遇到了问题,可以通过下述方法使用魔搭社区。

                            export USE_MODELSCOPE_HUB=1 # Windows 使用 `set USE_MODELSCOPE_HUB=1`
                            

                            将 model_name_or_path 设置为模型 ID 来加载对应的模型。在魔搭社区查看所有可用的模型,例如 LLM-Research/Meta-Llama-3-8B-Instruct。


                            8、使用 W&B 面板

                            若要使用 Weights & Biases 记录实验数据,请在 yaml 文件中添加下面的参数。

                            report_to: wandb
                            run_name: test_run # 可选
                            

                            在启动训练任务时,将 WANDB_API_KEY 设置为密钥来登录 W&B 账户。


                            三、支持


                            1、模型

                            模型名模型大小Template
                            Baichuan 27B/13Bbaichuan2
                            BLOOM/BLOOMZ560M/1.1B/1.7B/3B/7.1B/176B-
                            ChatGLM36Bchatglm3
                            Command R35B/104Bcohere
                            DeepSeek (Code/MoE)7B/16B/67B/236Bdeepseek
                            Falcon7B/11B/40B/180Bfalcon
                            Gemma/Gemma 2/CodeGemma2B/7B/9B/27Bgemma
                            GLM-49Bglm4
                            InternLM27B/20Bintern2
                            Llama7B/13B/33B/65B-
                            Llama 27B/13B/70Bllama2
                            Llama 38B/70Bllama3
                            LLaVA-1.57B/13Bvicuna
                            Mistral/Mixtral7B/8x7B/8x22Bmistral
                            OLMo1B/7B-
                            PaliGemma3Bgemma
                            Phi-1.5/Phi-21.3B/2.7B-
                            Phi-34B/7B/14Bphi
                            Qwen/Qwen1.5/Qwen2 (Code/MoE)0.5B/1.5B/4B/7B/14B/32B/72B/110Bqwen
                            StarCoder 23B/7B/15B-
                            XVERSE7B/13B/65Bxverse
                            Yi/Yi-1.56B/9B/34Byi
                            Yi-VL6B/34Byi_vl
                            Yuan 22B/51B/102Byuan

                            Note : 对于所有“基座”(Base)模型,template 参数可以是 default, alpaca, vicuna 等任意值。但“对话”(Instruct/Chat)模型请务必使用对应的模板。

                            请务必在训练和推理时采用完全一致的模板。

                            项目所支持模型的完整列表请参阅 constants.py。

                            您也可以在 template.py 中添加自己的对话模板。


                            2、训练方法

                            方法全参数训练部分参数训练LoRAQLoRA
                            预训练
                            指令监督微调
                            奖励模型训练
                            PPO 训练
                            DPO 训练
                            KTO 训练
                            ORPO 训练
                            SimPO 训练

                            3、数据集


                            预训练数据集
                            • Wiki Demo (en)
                            • RefinedWeb (en)
                            • RedPajama V2 (en)
                            • Wikipedia (en)
                            • Wikipedia (zh)
                            • Pile (en)
                            • SkyPile (zh)
                            • FineWeb (en)
                            • FineWeb-Edu (en)
                            • The Stack (en)
                            • StarCoder (en)
                              指令微调数据集
                              • Identity (en&zh)
                              • Stanford Alpaca (en)
                              • Stanford Alpaca (zh)
                              • Alpaca GPT4 (en&zh)
                              • Glaive Function Calling V2 (en&zh)
                              • LIMA (en)
                              • Guanaco Dataset (multilingual)
                              • BELLE 2M (zh)
                              • BELLE 1M (zh)
                              • BELLE 0.5M (zh)
                              • BELLE Dialogue 0.4M (zh)
                              • BELLE School Math 0.25M (zh)
                              • BELLE Multiturn Chat 0.8M (zh)
                              • UltraChat (en)
                              • OpenPlatypus (en)
                              • CodeAlpaca 20k (en)
                              • Alpaca CoT (multilingual)
                              • OpenOrca (en)
                              • SlimOrca (en)
                              • MathInstruct (en)
                              • Firefly 1.1M (zh)
                              • Wiki QA (en)
                              • Web QA (zh)
                              • WebNovel (zh)
                              • Nectar (en)
                              • deepctrl (en&zh)
                              • Advertise Generating (zh)
                              • ShareGPT Hyperfiltered (en)
                              • ShareGPT4 (en&zh)
                              • UltraChat 200k (en)
                              • AgentInstruct (en)
                              • LMSYS Chat 1M (en)
                              • Evol Instruct V2 (en)
                              • Cosmopedia (en)
                              • STEM (zh)
                              • Ruozhiba (zh)
                              • Neo-sft (zh)
                              • WebInstructSub (en)
                              • Magpie-Pro-300K-Filtered (en)
                              • LLaVA mixed (en&zh)
                              • Open Assistant (de)
                              • Dolly 15k (de)
                              • Alpaca GPT4 (de)
                              • OpenSchnabeltier (de)
                              • Evol Instruct (de)
                              • Dolphin (de)
                              • Booksum (de)
                              • Airoboros (de)
                              • Ultrachat (de)
                                偏好数据集
                                • DPO mixed (en&zh)
                                • UltraFeedback (en)
                                • Orca DPO Pairs (en)
                                • HH-RLHF (en)
                                • Nectar (en)
                                • Orca DPO (de)
                                • KTO mixed (en)

                                  部分数据集的使用需要确认,我们推荐使用下述命令登录您的 Hugging Face 账户。

                                  pip install --upgrade huggingface_hub
                                  huggingface-cli login
                                  

                                  4、软硬件依赖

                                  必需项至少推荐
                                  python3.83.11
                                  torch1.13.12.3.0
                                  transformers4.41.24.41.2
                                  datasets2.16.02.19.2
                                  accelerate0.30.10.30.1
                                  peft0.11.10.11.1
                                  trl0.8.60.9.4
                                  可选项至少推荐
                                  CUDA11.612.2
                                  deepspeed0.10.00.14.0
                                  bitsandbytes0.39.00.43.1
                                  vllm0.4.30.4.3
                                  flash-attn2.3.02.5.9

                                  硬件依赖

                                  * 估算值

                                  方法精度7B13B30B70B110B8x7B8x22B
                                  FullAMP120GB240GB600GB1200GB2000GB900GB2400GB
                                  Full1660GB120GB300GB600GB900GB400GB1200GB
                                  Freeze1620GB40GB80GB200GB360GB160GB400GB
                                  LoRA/GaLore/BAdam1616GB32GB64GB160GB240GB120GB320GB
                                  QLoRA810GB20GB40GB80GB140GB60GB160GB
                                  QLoRA46GB12GB24GB48GB72GB30GB96GB
                                  QLoRA24GB8GB16GB24GB48GB18GB48GB

                                  2024-07-17(三)

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]