公司网站建设任务书,网站解析加速,it前端是做网站的,移动端网站模板怎么做文章目录 一、关于 Axolotl特点Axolotl支持 二、快速入门⚡用法 三、环境设置1、Docker2、Conda/Pip venv3、Cloud GPU4、Bare Metal Cloud GPULambdaLabsGCP 5、Windows6、Mac7、Google Colab8、通过SkyPilot在公共云上启动9、通过 dstack 在公共云上启动 四、其他高级设置1、… 文章目录 一、关于 Axolotl特点Axolotl支持 二、快速入门⚡用法 三、环境设置1、Docker2、Conda/Pip venv3、Cloud GPU4、Bare Metal Cloud GPULambdaLabsGCP 5、Windows6、Mac7、Google Colab8、通过SkyPilot在公共云上启动9、通过 dstack 在公共云上启动 四、其他高级设置1、数据集2、配置所有配置选项 五、训练运行预处理数据集多GPU1、DeepSpeed2、FSDP3、FSDP QLoRA4、权重和偏差记录5、特殊 token6、Inference Playground7、将LORA 与基础合并 六、常见错误 标记化不匹配 b/w 推理和训练 七、其他调试 Axolotl需要帮忙吗徽章❤️社区展示贡献 一、关于 Axolotl
Axolotl是一种旨在简化各种AI模型微调的工具提供对多种配置和架构的支持。
github : https://github.com/axolotl-ai-cloud/axolotl官方文档https://axolotl-ai-cloud.github.io/axolotl/官网https://axolotl.ai 特点
训练各种Huggingface模型如美洲驼、蟒蛇、猎鹰、mpt支持fullfinetune、lora、qlora、relora和gptq使用简单的yaml文件或CLI覆盖自定义配置加载不同的数据集格式、使用自定义格式或自带标记化数据集与xher、闪存关注、绳索缩放和多重包装集成通过FSDP或DeepSpeed与单个GPU或多个GPU一起使用使用Docker在本地或云上轻松运行将结果和可选的检查点记录到wandb或mlflow还有更多 Axolotl支持
fp16/fp32loraqloragptqgptq w/flash attnflash attnxformers attnllama✅✅✅✅✅✅✅Mistral✅✅✅✅✅✅✅Mixtral-MoE✅✅✅❓❓❓❓Mixtral8X22✅✅✅❓❓❓❓Pythia✅✅✅❌❌❌❓cerebras✅✅✅❌❌❌❓btlm✅✅✅❌❌❌❓mpt✅❌❓❌❌❌❓falcon✅✅✅❌❌❌❓gpt-j✅✅✅❌❌❓❓XGen✅❓✅❓❓❓✅phi✅✅✅❓❓❓❓RWKV✅❓❓❓❓❓❓Qwen✅✅✅❓❓❓❓Gemma✅✅✅❓❓✅❓
✅支持❌不支持❓未经测试 二、快速入门⚡
只需几个步骤即可开始使用Axolotl本快速入门指南将引导您完成设置和运行基本微调任务。
要求Python3.10 和 Pytorch2.1.1。
git clone https://github.com/axolotl-ai-cloud/axolotl
cd axolotlpip3 install packaging ninja
pip3 install -e .[flash-attn,deepspeed]用法
# preprocess datasets - optional but recommended
CUDA_VISIBLE_DEVICES python -m axolotl.cli.preprocess examples/openllama-3b/lora.yml# finetune lora
accelerate launch -m axolotl.cli.train examples/openllama-3b/lora.yml# inference
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# remote yaml files - the yaml config can be hosted on a public URL
# Note: the yaml config must directly link to the **raw** yaml
accelerate launch -m axolotl.cli.train https://raw.githubusercontent.com/axolotl-ai-cloud/axolotl/main/examples/openllama-3b/lora.yml三、环境设置 1、Docker
docker run --gpus all --rm -it winglian/axolotl:main-latest或者在当前文件上运行进行开发
docker compose up -d注如果您想调试axolotl或更喜欢使用Docker作为您的开发环境请参阅调试指南中关于Docker的部分。 2、Conda/Pip venv
安装python3.10安装pytorch稳定https://pytorch.org/get-started/locally/将Axolotl与python依赖项一起安装
pip3 install packaging
pip3 install -e .[flash-attn,deepspeed]可选登录Huggingface以使用门控模型/数据集。
huggingface-cli login在 huggingface.co/settings/tokens 拿到令牌 3、Cloud GPU
对于支持docker映像的云GPU提供商请使用winglian/axolotl-cloud:main-latest
Latitude.sh使用这个直接链接JarvisLabs.ai使用这个直接链接在RunPod上使用此直接链接 4、Bare Metal Cloud GPU LambdaLabs
安装 python
sudo apt update
sudo apt install -y python3.10sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1
sudo update-alternatives --config python # pick 3.10 if given option
python -V # should be 3.10安装 pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py安装 Pytorch https://pytorch.org/get-started/locally/Follow instructions on quickstart.运行
pip3 install protobuf3.20.3
pip3 install -U --ignore-installed requests Pillow psutil scipySet path
export LD_LIBRARY_PATH/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATHGCP
Use a Deeplearning linux OS with cuda and pytorch installed. Then follow instructions on quickstart.
Make sure to run the below to uninstall xla.
pip uninstall -y torch_xla[tpu]5、Windows
请使用WSL或Docker 6、Mac
使用下面的而不是快速入门中的安装方法。
pip3 install -e .更多信息mac.md 7、Google Colab
请使用此示例 笔记本。 8、通过SkyPilot在公共云上启动
要在7云上GCP、AWS、Azure、OCI等启动GPU实例按需和现场实例您可以使用SkyPilot
pip install skypilot-nightly[gcp,aws,azure,oci,lambda,kubernetes,ibm,scp] # choose your clouds
sky check获取使用Axolotl微调mistralai/Mistral-7B-v0.1的示例YAMLs
git clone https://github.com/skypilot-org/skypilot.git
cd skypilot/llm/axolotl使用一个命令启动
# On-demand
HF_TOKENxx sky launch axolotl.yaml --env HF_TOKEN# Managed spot (auto-recovery on preemption)
HF_TOKENxx BUCKETunique-name sky spot launch axolotl-spot.yaml --env HF_TOKEN --env BUCKET9、通过 dstack 在公共云上启动
要在公共云GCP、AWS、Azure、Lambda Labs、TensorDock、Vast.ai和CUDO上启动GPU实例按需实例和现场实例可以使用dstack。
用YAML写一份工作描述如下
# dstack.yaml
type: taskimage: winglian/axolotl-cloud:main-20240429-py3.11-cu121-2.2.2env:- HUGGING_FACE_HUB_TOKEN- WANDB_API_KEYcommands:- accelerate launch -m axolotl.cli.train config.yamlports:- 6006resources:gpu:memory: 24GB..count: 2然后只需使用dstack run命令运行该作业。如果您需要spot实例请附加--spot选项。dstack run命令将显示跨多个云服务价格最便宜的实例
pip install dstack
HUGGING_FACE_HUB_TOKENxxx WANDB_API_KEYxxx dstack run . -f dstack.yaml # --spot有关进一步和细粒度的用例请参阅官方dstack文档和官方存储库中axolotl示例的详细描述。 四、其他高级设置
1、数据集
Axolotl支持多种数据集格式。建议使用JSONL。JSONL的架构取决于您希望使用的任务和提示模板。除了JSONL您还可以使用HuggingFace数据集其中包含每个JSONL字段的列。
有关如何使用不同数据集格式的更多信息请参阅这些文档。 2、配置
请参阅示例以快速入门。建议根据您的需要复制和修改。最重要的选项是
模型
base_model: ./llama-7b-hf # local or huggingface repo注意代码将加载正确的架构。 数据集
datasets:# huggingface repo- path: vicgalle/alpaca-gpt4type: alpaca# huggingface repo with specific configuration/subset- path: EleutherAI/pilename: enron_emailstype: completion # format from earlierfield: text # Optional[str] default: text, field to use for completion data# huggingface repo with multiple named configurations/subsets- path: bigcode/commitpackftname:- ruby- python- typescripttype: ... # unimplemented custom format# fastchat conversation# See conversation options: https://github.com/lm-sys/FastChat/blob/main/fastchat/conversation.py- path: ...type: sharegptconversation: chatml # default: vicuna_v1.1# local- path: data.jsonl # or jsonds_type: json # see other options belowtype: alpaca# dataset with splits, but no train split- path: knowrohit07/know_sqltype: context_qa.load_v2train_on_split: validation# loading from s3 or gcs# s3 creds will be loaded from the system default and gcs only supports public access- path: s3://path_to_ds # Accepts folder with arrow/parquet or file path like above. Supports s3, gcs....# Loading Data From a Public URL# - The file format is json (which includes jsonl) by default. For different formats, adjust the ds_type option accordingly.- path: https://some.url.com/yourdata.jsonl # The URL should be a direct link to the file you wish to load. URLs must use HTTPS protocol, not HTTP.ds_type: json # this is the default, see other options below.装载
load_in_4bit: true
load_in_8bit: truebf16: auto # require ampere, auto will detect if your GPU supports this and choose automatically.
fp16: # leave empty to use fp16 when bf16 is auto. set to false if you want to fallback to fp32
tf32: true # require amperebfloat16: true # require ampere, use instead of bf16 when you dont want AMP (automatic mixed precision)
float16: true # use instead of fp16 when you dont want AMP注意Repo不进行4位量化。 lora
adapter: lora # qlora or leave blank for full finetune
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可能会遇到 损失不稳定性。 1、DeepSpeed
DeepSpeed是多gpu系统的优化套件可让您训练比您大得多的模型 通常可能能够适应GPU的VRAM。有关各种优化类型的更多信息 对于深度速度可在https://huggingface.co/docs/accelerate/main/en/usage_guides/deepspeed#what-is-integrated
我们为ZeRO第1、2和3阶段提供了几种默认的深度JSON配置。
deepspeed: deepspeed_configs/zero1.jsonaccelerate launch -m axolotl.cli.train examples/llama-2/config.yml --deepspeed deepspeed_configs/zero1.json2、FSDP
llama FSDP
fsdp:- full_shard- auto_wrap
fsdp_config:fsdp_offload_params: truefsdp_state_dict_type: FULL_STATE_DICTfsdp_transformer_layer_cls_to_wrap: LlamaDecoderLayer3、FSDP QLoRA
Axolotl支持使用FSDP和QLoRA进行培训有关详细信息请参阅这些文档。 4、权重和偏差记录
确保您的 WANDB_API_KEY 环境变量已设置推荐或者您使用 wandb login 登陆 wandb。
wandb 选项
wandb_mode:
wandb_project:
wandb_entity:
wandb_watch:
wandb_name:
wandb_log_model:5、特殊 token
在标记器的词汇表中包含特殊的标记如分隔符、序列结束beginning-of-sequence非常重要。这将帮助您避免标记化问题并帮助您的模型更好地训练。您可以在axolotl中这样做
special_tokens:bos_token: seos_token: /sunk_token: unk
tokens: # these are delimiters- |im_start|- |im_end|当您在axolotl配置中包含这些标记时axolotl会将这些标记添加到标记器的词汇表中。 6、Inference Playground
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从文件全参数微调 w/ a prompt
cat /tmp/prompt.txt | python -m axolotl.cli.inference examples/your_config.yml \
--base_model./completed-model --prompterNone --load_in_8bitTrue使用 gradio 托管
python -m axolotl.cli.inference examples/your_config.yml --gradio请使用--sample_packing False如果您打开它并收到类似于下面的错误 RuntimeError堆栈期望每个张量大小相等但在条目0处得到[1,32,1,128]在条目1处得到[1,32,8,128] 7、将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_sizeeval_batch_sizegradient_accumulation_stepssequence_len 如果没有帮助请尝试在命令中不使用深度速度和不加速将“加速启动”替换为“python”运行。
使用 adamw_bnb_8bit 也可以节省一些内存。 failed (exitcode: -9)通常意味着您的系统内存用完了。同样您应该考虑减少与VRAM用完时相同的设置。此外考虑升级您的系统内存这应该比GPU升级更简单。 RuntimeError预期的标量类型Float但找到一半 尝试设置fp16: true NotImplementedError: No operator found for memory_efficient_attention_forward 尝试关闭 xformers。 accelerate config missing 忽略它是安全的。 NCCL Timeouts during training 请参阅 NCCL 指南。 标记化不匹配 b/w 推理和训练
对于许多格式Axolotl通过在标记字符串之后连接标记id来构造提示。连接标记id而不是对字符串进行操作的原因是为了保持对注意力掩码的精确计算。
如果您解码由axolotl构造的提示符您可能会看到您不期望的标记之间的空格或缺少空格尤其是在分隔符和特殊标记周围。当您开始使用新格式时您应该始终执行以下操作
使用 python -m axolotl.cli.preprocess your_config.yml --debug 物化一些数据然后使用模型的标记器解码前几行。在推理过程中就在您将令牌id张量传递给模型之前将这些令牌解码回字符串。确保#2中的推理字符串看起来与您从#1中微调的数据完全相同包括空格和新行。如果它们不一样请相应地调整您的推理服务器。作为额外的故障排除步骤您可以查看1到2之间的令牌id以确保它们相同。
训练和推理过程中的提示不一致会导致模型性能非常差所以值得检查一下。这篇博客文章有一个具体的例子。 七、其他
调试 Axolotl
有关调试Axolotl的提示以及使用VSCode进行调试的示例配置请参阅此调试指南。 需要帮忙吗
加入我们的不和谐服务器我们的社区成员可以帮助您。
需要专门的支持请通过✉️联系我们以获取专门的支持选项。 徽章❤️
用Axolotl建造一些很酷的东西考虑在您的模型卡上添加一个徽章。
[img srchttps://raw.githubusercontent.com/axolotl-ai-cloud/axolotl/main/image/axolotl-badge-web.png altBuilt with Axolotl width200 height32/](https://github.com/axolotl-ai-cloud/axolotl)社区展示
查看一些使用Axolotl构建的项目和模型有想要添加到我们的社区展示中的模型吗使用您的模型打开PR。
开放存取AI集体
Minotaur 13bManticore 13bHippogriff 30b PocketDoc实验室
Dan’s PersonalityEngine 13b LoRA 贡献
请阅读投稿指南
错误请检查未解决问题否则创建新问题。
非常欢迎PR
请运行以下快速入门说明以设置env
pip3 install -r requirements-dev.txt -r requirements-tests.txt
pre-commit install# test
pytest tests/# optional: run against all files
pre-commit run --all-files感谢我们迄今为止的所有贡献者。通过为Axolotl做出贡献来帮助推动开源AI的进步。 2024-07-16二