axolotl

axolotl

多功能AI模型微调工具

Axolotl是一个功能丰富的AI模型微调工具,支持llama、pythia、falcon等多种Huggingface模型。它提供全微调、LoRA、QLoRA等训练方法,支持自定义配置和多种数据集格式。Axolotl集成了xformer、flash attention等技术,可在单GPU或多GPU环境运行,支持Docker部署,并可将结果记录到wandb或mlflow。该工具为AI模型训练提供了灵活高效的解决方案。

AxolotlAI模型微调训练配置Github开源项目

Axolotl(蝾螈)

Axolotl是一个旨在简化各种AI模型微调过程的工具,支持多种配置和架构。

特点:

  • 训练各种Huggingface模型,如llama、pythia、falcon、mpt
  • 支持全量微调、LoRA、QLoRA、ReLoRA和GPTQ
  • 使用简单的yaml文件或命令行覆盖来自定义配置
  • 加载不同的数据集格式,使用自定义格式,或使用您自己的标记化数据集
  • 集成了xformer、flash attention、RoPE缩放和多包技术
  • 适用于单GPU或通过FSDP或Deepspeed使用多GPU
  • 可轻松在本地或云端使用Docker运行
  • 将结果和可选的检查点记录到wandb或mlflow
  • 以及更多功能! <a href="https://www.phorm.ai/query?projectId=e315ba4a-4e14-421f-ab05-38a1f9076f25"> <img alt="phorm.ai" src="https://yellow-cdn.veclightyear.com/835a84d5/6534ee9f-7702-4426-82f0-5266056d0d2a.svg?&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNSIgaGVpZ2h0PSI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxwYXRoIGQ9Ik00LjQzIDEuODgyYTEuNDQgMS40NCAwIDAgMS0uMDk4LjQyNmMtLjA1LjEyMy0uMTE1LjIzLS4xOTIuMzIyLS4wNzUuMDktLjE2LjE2NS0uMjU1LjIyNmExLjM1MyAxLjM1MyAwIDAgMS0uNTk1LjIxMmMtLjA5OS4wMTItLjE5Mi4wMTQtLjI3OS4wMDZsLTEuNTkzLS4xNHYtLjQwNmgxLjY1OGMuMDkuMDAxLjE3LS4xNjkuMjQ2LS4xOTFhLjYwMy42MDMgMCAwIDAgLjItLjEwNi41MjkuNTI5IDAgMCAwIC4xMzgtLjE3LjY1NC42NTQgMCAwIDAgLjA2NS0uMjRsLjAyOC0uMzJhLjkzLjkzIDAgMCAwLS4wMzYtLjI0OS41NjcuNTY3IDAgMCAwLS4xMDMtLjIuNTAyLjUwMiAwIDAgMC0uMTY4LS4xMzguNjA4LjYwOCAwIDAgMC0uMjQtLjA2N0wyLjQzNy43MjkgMS42MjUuNjcxYS4zMjIuMzIyIDAgMCAwLS4yMzIuMDU4LjM3NS4zNzUgMCAwIDAtLjExNi4yMzJsLS4xMTYgMS40NS0uMDU4LjY5Ny0uMDU4Ljc1NEwuNzA1IDRsLS4zNTctLjA3OUwuNjAyLjkwNkMuNjE3LjcyNi42NjMuNTc0LjczOS40NTRhLjk1OC45NTggMCAwIDEgLjI3NC0uMjg1Ljk3MS45NzEgMCAwIDEgLjMzNy0uMTRjLjExOS0uMDI2LjIyNy0uMDM0LjMyNS0uMDI2TDMuMjMyLjE2Yy4xNTkuMDE0LjMzNi4wMy40NTkuMDgyYTEuMTczIDEuMTczIDAgMCAxIC41NDUuNDQ3Yy4wNi4wOTQuMTA5LjE5Mi4xNDQuMjkzYTEuMzkyIDEuMzkyIDAgMCAxIC4wNzguNThsLS4wMjkuMzJaIiBmaWxsPSIjRjI3NzdBIi8+CiAgPHBhdGggZD0iTTQuMDgyIDIuMDA3YTEuNDU1IDEuNDU1IDAgMCAxLS4wOTguNDI3Yy0uMDUuMTI0LS4xMTQuMjMyLS4xOTIuMzI0YTEuMTMgMS4xMyAwIDAgMS0uMjU0LjIyNyAxLjM1MyAxLjM1MyAwIDAgMS0uNTk1LjIxNGMtLjEuMDEyLS4xOTMuMDE0LS4yOC4wMDZsLTEuNTYtLjEwOC4wMzQtLjQwNi4wMy0uMzQ4IDEuNTU5LjE1NGMuMDkgMCAuMTczLS4wMS4yNDgtLjAzM2EuNjAzLjYwMyAwIDAgMCAuMi0uMTA2LjUzMi41MzIgMCAwIDAgLjEzOS0uMTcyLjY2LjY2IDAgMCAwIC4wNjQtLjI0MWwuMDI5LS4zMjFhLjk0Ljk0IDAgMCAwLS4wMzYtLjI1LjU3LjU3IDAgMCAwLS4xMDMtLjIwMi41MDIuNTAyIDAgMCAwLS4xNjgtLjEzOC42MDUuNjA1IDAgMCAwLS4yNC0uMDY3TDEuMjczLjgyN2MtLjA5NC0uMDA4LS4xNjguMDEtLjIyMS4wNTUtLjA1My4wNDUtLjA4NC4xMTQtLjA5Mi4yMDZMLjcwNSA0IDAgMy45MzhsLjI1NS0yLjkxMUExLjAxIDEuMDEgMCAwIDEgLjM5My41NzIuOTYyLjk2MiAwIDAgMSAuNjY2LjI4NmEuOTcuOTcgMCAwIDEgLjMzOC0uMTRDMS4xMjIuMTIgMS4yMy4xMSAxLjMyOC4xMTlsMS41OTMuMTRjLjE2LjAxNC4zLjA0Ny40MjMuMWExLjE3IDEuMTcgMCAwIDEgLjU0NS40NDhjLjA2MS4wOTUuMTA5LjE5My4xNDQuMjk1YTEuNDA2IDEuNDA2IDAgMCAxIC4wNzcuNTgzbC0uMDI4LjMyMloiIGZpbGw9IndoaXRlIi8+CiAgPHBhdGggZD0iTTQuMDgyIDIuMDA3YTEuNDU1IDEuNDU1IDAgMCAxLS4wOTguNDI3Yy0uMDUuMTI0LS4xMTQuMjMyLS4xOTIuMzI0YTEuMTMgMS4xMyAwIDAgMS0uMjU0LjIyNyAxLjM1MyAxLjM1MyAwIDAgMS0uNTk1LjIxNGMtLjEuMDEyLS4xOTMuMDE0LS4yOC4wMDZsLTEuNTYtLjEwOC4wMzQtLjQwNi4wMy0uMzQ4IDEuNTU5LjE1NGMuMDkgMCAuMTczLS4wMS4yNDgtLjAzM2EuNjAzLjYwMyAwIDAgMCAuMi0uMTA2LjUzMi41MzIgMCAwIDAgLjEzOS0uMTcyLjY2LjY2IDAgMCAwIC4wNjQtLjI0MWwuMDI5LS4zMjFhLjk0Ljk0IDAgMCAwLS4wMzYtLjI1LjU3LjU3IDAgMCAwLS4xMDMtLjIwMi41MDIuNTAyIDAgMCAwLS4xNjgtLjEzOC42MDUuNjA1IDAgMCAwLS4yNC0uMDY3TDEuMjczLjgyN2MtLjA5NC0uMDA4LS4xNjguMDEtLjIyMS4wNTUtLjA1My4wNDUtLjA4NC4xMTQtLjA5Mi4yMDZMLjcwNSA0IDAgMy45MzhsLjI1NS0yLjkxMUExLjAxIDEuMDEgMCAwIDEgLjM5My41NzIuOTYyLjk2MiAwIDAgMSAuNjY2LjI4NmEuOTcuOTcgMCAwIDEgLjMzOC0uMTRDMS4xMjIuMTIgMS4yMy4xMSAxLjMyOC4xMTlsMS41OTMuMTRjLjE2LjAxNC4zLjA0Ny40MjMuMWExLjE3IDEuMTcgMCAwIDEgLjU0NS40NDhjLjA2MS4wOTUuMTA5LjE5My4xNDQuMjk1YTEuNDA2IDEuNDA2IDAgMCAxIC4wNzcuNTgzbC0uMDI4LjMyMloiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=">
</a> <table> <tr> <td> ## 目录 - [简介](#axolotl) - [支持的功能](#axolotl-支持) - [快速入门](#快速入门-) - [环境](#环境) - [Docker](#docker) - [Conda/Pip虚拟环境](#condapip虚拟环境) - [云GPU](#云gpu) - Latitude.sh, JarvisLabs, RunPod - [裸机云GPU](#裸机云gpu) - [Windows](#windows) - [Mac](#mac) - [Google Colab](#google-colab) - [通过SkyPilot在公有云上启动](#通过skypilot在公有云上启动) - [通过dstack在公有云上启动](#通过dstack在公有云上启动) - [数据集](#数据集) - [配置](#配置) - [训练](#训练) - [推理](#推理-playground) - [将LORA合并到基础模型](#将lora合并到基础模型) - [特殊标记](#特殊标记) - [所有配置选项](#所有配置选项) - 高级主题 - [Multipack](./docs/multipack.qmd)<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#666" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg> - [RLHF & DPO](./docs/rlhf.qmd)<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#666" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg> - [数据集预处理](./docs/dataset_preprocessing.qmd)<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#666" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg> - [Unsloth](./docs/unsloth.qmd)<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#666" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg> - [常见错误](#常见错误-) - [训练与推理之间的分词不匹配](#训练与推理之间的分词不匹配) - [调试Axolotl](#调试axolotl) - [需要帮助?](#需要帮助-) - [徽章](#徽章-) - [社区展示](#社区展示) - [贡献](#贡献-) - [赞助商](#赞助商-) </td> <td> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/33e15a17-3d5b-4eea-9cf3-12e2dc9875e1.png" alt="axolotl" width="160"> <div> <p> <b>Axolotl提供了一个统一的仓库,<br />可以轻松地微调各种AI模型</b> </p> <p> 快来问Axolotl问题吧!! </p> <img src="https://yellow-cdn.veclightyear.com/835a84d5/9fcb0c83-df7c-4121-933a-b160b584d0bc.svg?branch=main" alt="pre-commit"> <img alt="PyTest状态" src="https://yellow-cdn.veclightyear.com/835a84d5/3e62cd8a-e968-4173-be99-13364f0c44fa.svg?branch=main"> </div> </div> </td> </tr> </table>

Axolotl支持

fp16/fp32loraqloragptqgptq w/flash attnflash attnxformers attn
llama
Mistral
Mixtral-MoE
Mixtral8X22
Pythia
cerebras
btlm
mpt
falcon
gpt-j
XGen
phi
RWKV
Qwen
Gemma

✅: 支持 ❌: 不支持 ❓: 未测试

快速入门 ⚡

只需几个步骤即可开始使用Axolotl!本快速入门指南将指导您完成设置和运行基本微调任务的过程。

要求:Python >=3.10 和 Pytorch >=2.1.1。

git clone https://github.com/axolotl-ai-cloud/axolotl cd axolotl pip3 install packaging ninja pip3 install -e '.[flash-attn,deepspeed]'

使用方法

# 预处理数据集 - 可选但推荐 CUDA_VISIBLE_DEVICES="" python -m axolotl.cli.preprocess examples/openllama-3b/lora.yml # 微调lora accelerate launch -m axolotl.cli.train examples/openllama-3b/lora.yml # 推理 accelerate launch -m axolotl.cli.inference examples/openllama-3b/lora.yml \ --lora_model_dir="./outputs/lora-out" # gradio accelerate launch -m axolotl.cli.inference examples/openllama-3b/lora.yml \ --lora_model_dir="./outputs/lora-out" --gradio # 远程yaml文件 - yaml配置可以托管在公共URL上 # 注意:yaml配置必须直接链接到**原始**yaml accelerate launch -m axolotl.cli.train https://raw.githubusercontent.com/axolotl-ai-cloud/axolotl/main/examples/openllama-3b/lora.yml

高级设置

环境

Docker

docker run --gpus '"all"' --rm -it winglian/axolotl:main-latest

或者在当前文件上运行以进行开发:

docker compose up -d

[!提示] 如果您想调试axolotl或更喜欢使用Docker作为开发环境,请参阅调试指南的Docker部分

<details> <summary>Docker高级用法</summary>

一个更强大的Docker运行命令如下:

docker run --privileged --gpus '"all"' --shm-size 10g --rm -it --name axolotl --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --mount type=bind,src="${PWD}",target=/workspace/axolotl -v ${HOME}/.cache/huggingface:/root/.cache/huggingface winglian/axolotl:main-latest

此外,它还:

  • 通过--ipc--ulimit参数防止运行 deepspeed 等时出现内存问题(例如可能遇到 SIGBUS/信号 7 错误)。
  • 通过--mount/-v参数保存下载的 HF 数据(模型等)和你对 axolotl 代码的修改。
  • --name参数只是让你在 vscode (Dev Containers: Attach to Running Container...) 或终端中更容易引用容器。
  • --privileged标志赋予容器所有权限。
  • --shm-size 10g参数增加共享内存大小。如果使用 deepspeed 时看到exitcode: -7错误,请使用此参数。

NVIDIA 网站上的更多信息

Conda/Pip 虚拟环境

  1. 安装 Python >=3.10

  2. 安装 PyTorch 稳定版 https://pytorch.org/get-started/locally/

  3. 安装 Axolotl 及其 Python 依赖

    pip3 install packaging pip3 install -e '.[flash-attn,deepspeed]'
  4. (可选) 登录 Huggingface 以使用受限模型/数据集。

    huggingface-cli login

    在 huggingface.co/settings/tokens 获取令牌

云 GPU

对于支持 Docker 镜像的云 GPU 提供商,使用 winglian/axolotl-cloud:main-latest

裸机云 GPU

LambdaLabs
  1. 安装 Python
sudo apt update sudo apt install -y python3.10 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 sudo update-alternatives --config python # 如果有选项,选择 3.10 python -V # 应该是 3.10
  1. 安装 pip
wget https://bootstrap.pypa.io/get-pip.py python get-pip.py
  1. 安装 PyTorch https://pytorch.org/get-started/locally/

  2. 按快速入门指南操作。

  3. 运行

pip3 install protobuf==3.20.3 pip3 install -U --ignore-installed requests Pillow psutil scipy
  1. 设置路径
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
GCP

使用已安装 CUDA 和 PyTorch 的深度学习 Linux 操作系统。然后按快速入门指南操作。

确保运行以下命令卸载 xla。

pip uninstall -y torch_xla[tpu]

Windows

请使用 WSL 或 Docker!

Mac

使用以下命令替代快速入门中的安装方法。

pip3 install -e '.'

更多信息:mac.md

Google Colab

请使用此示例笔记本

通过 SkyPilot 在公有云上启动

要在 7+ 个云平台(GCP、AWS、Azure、OCI 等)的 GPU 实例(包括按需和竞价实例)上启动,你可以使用 SkyPilot:

pip install "skypilot-nightly[gcp,aws,azure,oci,lambda,kubernetes,ibm,scp]" # 选择你的云平台 sky check

获取使用 Axolotl 微调 mistralai/Mistral-7B-v0.1示例 YAML

git clone https://github.com/skypilot-org/skypilot.git
cd skypilot/llm/axolotl

使用一条命令启动:

# 按需 HF_TOKEN=xx sky launch axolotl.yaml --env HF_TOKEN # 托管竞价(自动恢复抢占) HF_TOKEN=xx BUCKET=<unique-name> sky spot launch axolotl-spot.yaml --env HF_TOKEN --env BUCKET

通过 dstack 在公有云上启动

要在公有云(GCP、AWS、Azure、Lambda Labs、TensorDock、Vast.ai 和 CUDO)的 GPU 实例(包括按需和竞价实例)上启动,你可以使用 dstack

在 YAML 中编写作业描述,如下所示:

# dstack.yaml type: task image: winglian/axolotl-cloud:main-20240429-py3.11-cu121-2.2.2 env: - HUGGING_FACE_HUB_TOKEN - WANDB_API_KEY commands: - accelerate launch -m axolotl.cli.train config.yaml ports: - 6006 resources: gpu: memory: 24GB.. count: 2

然后,只需使用 dstack run 命令运行作业。如果你想使用竞价实例,添加 --spot 选项。dstack run 命令会向你展示多个云服务中价格最便宜的实例:

pip install dstack HUGGING_FACE_HUB_TOKEN=xxx WANDB_API_KEY=xxx dstack run . -f dstack.yaml # --spot

对于更多和更细粒度的用例,请参阅官方 dstack 文档和官方仓库中 axolotl 示例的详细描述。

数据集

Axolotl 支持多种数据集格式。推荐使用 JSONL。JSONL 的模式取决于任务和你想使用的提示模板。除了 JSONL,你还可以使用包含每个 JSONL 字段列的 HuggingFace 数据集。

有关如何使用不同数据集格式的更多信息,请参阅文档

配置

请查看示例以快速入门。建议复制并根据需要修改。最重要的选项有:

  • 模型

    base_model: ./llama-7b-hf # 本地或 huggingface 仓库

    注意:代码将加载正确的架构。

  • 数据集

    datasets: # huggingface 仓库 - path: vicgalle/alpaca-gpt4 type: alpaca # 带有特定配置/子集的 huggingface 仓库 - path: EleutherAI/pile name: enron_emails type: completion # 之前的格式 field: text # 可选[str] 默认:text,用于完成数据的字段 # 带有多个命名配置/子集的 huggingface 仓库 - path: bigcode/commitpackft name: - ruby - python - typescript type: ... # 未实现的自定义格式 # fastchat 对话 # 参见 'conversation' 选项:https://github.com/lm-sys/FastChat/blob/main/fastchat/conversation.py - path: ... type: sharegpt conversation: chatml # 默认:vicuna_v1.1 # 本地 - path: data.jsonl # 或 json ds_type: json # 参见下面的其他选项 type: alpaca # 有分割但没有训练分割的数据集 - path: knowrohit07/know_sql type: context_qa.load_v2 train_on_split: validation # 从 s3 或 gcs 加载 # s3 凭证将从系统默认加载,gcs 仅支持公共访问 - path: s3://path_to_ds # 接受包含 arrow/parquet 的文件夹或如上所述的文件路径。支持 s3、gcs。 ... # 从公共 URL 加载数据 # - 文件格式默认为 `json`(包括 `jsonl`)。对于不同的格式,请相应调整 `ds_type` 选项。 - path: https://some.url.com/yourdata.jsonl # URL 应该是你想加载的文件的直接链接。URL 必须使用 HTTPS 协议,而非 HTTP。 ds_type: json # 这是默认值,参见下面的其他选项。
  • 加载

    load_in_4bit: true load_in_8bit: true bf16: auto # 需要 >=ampere,auto 将检测你的 GPU 是否支持并自动选择。 fp16: # 留空以在 bf16 为 'auto' 时使用 fp16。如果你想回退到 fp32,设置为 false tf32: true # 需要 >=ampere bfloat16: true # 需要 >=ampere,当你不想使用 AMP(自动混合精度)时使用,而不是 bf16 float16: true # 当你不想使用 AMP 时使用,而不是 fp16

    注意:该仓库不进行 4 位量化。

  • lora

    adapter: lora # '全量微调'或留空为完全微调 lora_r: 8 lora_alpha: 16 lora_dropout: 0.05 lora_target_modules: - q_proj - v_proj

所有配置选项

查看这些文档了解所有配置选项。

训练

运行

accelerate launch -m axolotl.cli.train your_config.yml

[!提示] 你也可以引用托管在公共URL上的配置文件,例如 accelerate launch -m axolotl.cli.train https://yourdomain.com/your_config.yml

预处理数据集

在微调之前,你可以选择性地预先对数据集进行分词。 这对于大型数据集来说是推荐的做法。

  • dataset_prepared_path: 设置为保存和加载预分词数据集的本地文件夹。
  • (可选): 设置 push_dataset_to_hub: hf_user/repo 将其推送到Huggingface。
  • (可选): 使用 --debug 查看预处理后的示例。
python -m axolotl.cli.preprocess your_config.yml

多GPU

以下是axolotl中可用的多GPU训练选项。请注意,目前DeepSpeed 是推荐的多GPU选项,因为FSDP可能会遇到 损失不稳定的问题。

DeepSpeed

Deepspeed是一个多GPU系统的优化套件,允许你训练比通常能够适应GPU VRAM的更大的模型。关于deepspeed各种优化类型的更多信息 可以在 https://huggingface.co/docs/accelerate/main/en/usage_guides/deepspeed#what-is-integrated 找到

我们提供了几个默认的deepspeed JSON配置,用于ZeRO阶段1、2和3。

deepspeed: deepspeed_configs/zero1.json
accelerate launch -m axolotl.cli.train examples/llama-2/config.yml --deepspeed deepspeed_configs/zero1.json
FSDP
  • llama FSDP
fsdp: - full_shard - auto_wrap fsdp_config: fsdp_offload_params: true fsdp_state_dict_type: FULL_STATE_DICT fsdp_transformer_layer_cls_to_wrap: LlamaDecoderLayer
FSDP + QLoRA

Axolotl支持使用FSDP和QLoRA进行训练,更多信息请参见这些文档

Weights & Biases 日志记录

确保你的 WANDB_API_KEY 环境变量已设置(推荐)或使用 wandb login 登录到wandb。

  • wandb选项
wandb_mode: wandb_project: wandb_entity: wandb_watch: wandb_name: wandb_log_model:
特殊标记

在你的分词器词汇表中包含特殊标记(如分隔符、序列结束、序列开始)很重要。这将帮助你避免分词问题并帮助你的模型更好地训练。你可以在axolotl中这样做:

special_tokens: bos_token: "<s>" eos_token: "</s>" unk_token: "<unk>" tokens: # 这些是分隔符 - "<|im_start|>" - "<|im_end|>"

当你在axolotl配置中包含这些标记时,axolotl会将这些标记添加到分词器的词汇表中。

推理游乐场

Axolotl允许你在交互式终端游乐场中加载你的模型,以便快速实验。 配置文件与训练时使用的配置文件相同。

根据训练的模型类型,向推理命令传递适当的标志:

  • 预训练LORA:
    python -m axolotl.cli.inference examples/your_config.yml --lora_model_dir="./lora-output-dir"
  • 全权重微调:
    python -m axolotl.cli.inference examples/your_config.yml --base_model="./completed-model"
  • 全权重微调,使用来自文本文件的提示:
    cat /tmp/prompt.txt | python -m axolotl.cli.inference examples/your_config.yml \ --base_model="./completed-model" --prompter=None --load_in_8bit=True

-- 使用gradio托管

python -m axolotl.cli.inference examples/your_config.yml --gradio

如果你启用了样本打包并收到类似以下的错误,请使用 --sample_packing False

RuntimeError: stack expects each tensor to be equal size, but got [1, 32, 1, 128] at entry 0 and [1, 32, 8, 128] at entry 1

将LORA合并到基础模型

以下命令将把你的LORA适配器与你的基础模型合并。你可以选择传递参数 --lora_model_dir 来指定保存LORA适配器的目录,否则,这将从axolotl配置文件中的 output_dir 推断。合并后的模型保存在子目录 {lora_model_dir}/merged 中。

python3 -m axolotl.cli.merge_lora your_config.yml --lora_model_dir="./completed-model"

你可能需要使用 gpu_memory_limit 和/或 lora_on_cpu 配置选项来避免内存不足。如果你仍然耗尽CUDA内存,你可以尝试在系统RAM中合并

CUDA_VISIBLE_DEVICES="" python3 -m axolotl.cli.merge_lora ...

虽然这会非常慢,但建议使用上述配置选项。

常见错误 🧰

另见常见问题调试指南

如果你遇到"Cuda内存不足"错误,这意味着你的GPU在训练过程中耗尽了内存。以下是解决方法:

请减少以下任何一项

  • micro_batch_size
  • eval_batch_size
  • gradient_accumulation_steps
  • sequence_len

如果这不起作用,尝试在命令中不使用deepspeed和accelerate(将"accelerate launch"替换为"python")。

使用adamw_bnb_8bit也可能节省一些内存。

failed (exitcode: -9)

通常意味着你的系统耗尽了系统内存。 同样,你应该考虑减少与耗尽VRAM时相同的设置。 此外,考虑升级你的系统RAM,这应该比GPU升级更简单。

RuntimeError: expected scalar type Float but found Half

尝试设置 fp16: true

NotImplementedError: No operator found for memory_efficient_attention_forward ...

尝试关闭xformers。

accelerate配置缺失

可以安全忽略。

训练期间出现NCCL超时

参见NCCL指南。

推理和训练之间的分词不匹配

对于许多格式,Axolotl通过在分词字符串之后连接标记ID来构建提示。之所以连接标记ID而不是操作字符串,是为了维持注意力掩码的精确计算。

如果你解码由axolotl构建的提示,你可能会看到标记之间的空格(或缺少空格),这可能是你所不期望的,尤其是在分隔符和特殊标记周围。当你开始使用新格式时,你应该始终执行以下操作:

  1. 使用 python -m axolotl.cli.preprocess your_config.yml --debug 具体化一些数据,然后用你的模型的分词器解码前几行。
  2. 在推理过程中,在将标记ID的张量传递给你的模型之前,将这些标记解码回字符串。
  3. 确保#2中的推理字符串看起来与#1中你微调的数据完全相同,包括空格和换行符。如果它们不相同,相应地调整你的推理服务器。
  4. 作为额外的故障排除步骤,你可以查看1和2之间的标记ID,确保它们是相同的。

在训练和推理期间的提示之间存在不一致可能会导致模型表现非常差,所以值得检查这一点。查看这篇博文以获取具体示例。

调试Axolotl

查看这个调试指南以获取有关调试Axolotl的提示,以及使用VSCode进行调试的示例配置。

需要帮助? 🙋

加入我们的Discord服务器,我们的社区成员可以在那里帮助你。

需要专门支持?请通过✉️wing@openaccessaicollective.org联系我们,了解专门支持选项。

徽章 ❤🏷️

使用Axolotl构建了很酷的东西?考虑在你的模型卡片中添加一个徽章。

[<img src="https://yellow-cdn.veclightyear.com/835a84d5/763144fe-9385-42d8-a548-da46c23db4c8.png" alt="Built with Axolotl" width="200" height="32"/>](https://github.com/axolotl-ai-cloud/axolotl)

<img src="https://yellow-cdn.veclightyear.com/835a84d5/763144fe-9385-42d8-a548-da46c23db4c8.png" alt="Built with Axolotl" width="200" height="32"/>

社区展示

查看一些使用Axolotl构建的项目和模型!想要将你的模型添加到我们的社区展示中吗?提交一个包含你的模型的PR。 开放访问人工智能集体

PocketDoc 实验室

贡献 🤝

请阅读贡献指南

发现bug?请查看未解决的问题,如果没有相关问题,请创建一个新的问题。

非常欢迎提交PR!

请按照快速入门说明操作,然后执行以下命令来设置环境:

pip3 install -r requirements-dev.txt -r requirements-tests.txt pre-commit install # 测试 pytest tests/ # 可选:对所有文件运行 pre-commit run --all-files

感谢迄今为止所有的贡献者。通过为Axolotl做出贡献,帮助推动开源人工智能的进步。

<a href="https://github.com/axolotl-ai-cloud/axolotl/graphs/contributors"> <img src="https://contrib.rocks/image?repo=openaccess-ai-collective/axolotl" alt="contributor chart by https://contrib.rocks"/> </a>

赞助商 🤝❤

开放访问人工智能集体由志愿贡献者运营,如winglianNanoCode012tmm1mhenrichsencasper-hansenhamelsmu等许多人,他们通过修复bug、回答社区问题和实现新功能来帮助我们加速前进。Axolotl需要赞助商的捐赠来支付运行单元和集成测试、解决社区问题以及提供奖励所需的计算资源。如果您喜欢axolotl,请考虑通过GitHub赞助商Ko-fi赞助该项目,或直接联系 wing@openaccessaicollective.org


💎 钻石赞助商 - 直接联系


🥇 金牌赞助商 - $5000/月


🥈 银牌赞助商 - $1000/月


🥉 铜牌赞助商 - $500/月


编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多