ForkNous ResearchNous Researchpublished Feb 22, 2024seen 5d

NousResearch/axolotl-func-calling

forked from axolotl-ai-cloud/axolotl

Open original ↗

Captured source

source ↗

NousResearch/axolotl-func-calling

Description: Go ahead and axolotl questions

License: Apache-2.0

Stars: 9

Forks: 2

Open issues: 1

Created: 2024-02-22T11:56:39Z

Pushed: 2024-03-13T00:10:19Z

Default branch: main

Fork: yes

Parent repository: axolotl-ai-cloud/axolotl

Archived: no

README:

Axolotl

Axolotl is a tool designed to streamline the fine-tuning of various AI models, offering support for multiple configurations and architectures.

Features:

  • Train various Huggingface models such as llama, pythia, falcon, mpt
  • Supports fullfinetune, lora, qlora, relora, and gptq
  • Customize configurations using a simple yaml file or CLI overwrite
  • Load different dataset formats, use custom formats, or bring your own tokenized datasets
  • Integrated with xformer, flash attention, rope scaling, and multipacking
  • Works with single GPU or multiple GPUs via FSDP or Deepspeed
  • Easily run with Docker locally or on the cloud
  • Log results and optionally checkpoints to wandb or mlflow
  • And more!

Table of Contents

  • [Introduction](#axolotl)
  • [Supported Features](#axolotl-supports)
  • [Quickstart](#quickstart-)
  • [Installation](#installation)
  • [Docker](#docker)
  • [Conda/Pip venv](#condapip-venv)
  • [Cloud GPU](#cloud-gpu) - Latitude.sh, RunPod
  • [Bare Metal Cloud GPU](#bare-metal-cloud-gpu)
  • [Windows](#windows)
  • [Launching on public clouds via SkyPilot](#launching-on-public-clouds-via-skypilot)
  • [Dataset](#dataset)
  • [How to Add Custom Prompts](#how-to-add-custom-prompts)
  • [How to Use Custom Pretokenized Dataset](#how-to-use-your-custom-pretokenized-dataset)
  • [Config](#config)
  • [Train](#train)
  • [Inference](#inference-playground)
  • [Merge LORA to Base](#merge-lora-to-base)
  • [Special Tokens](#special-tokens)
  • Advanced Topics
  • [Multipack](./docs/multipack.md)
  • [RLHF & DPO](./docs/rlhf.md)
  • [Common Errors](#common-errors-)
  • [Tokenization Mismatch b/w Training & Inference](#tokenization-mismatch-bw-inference--training)
  • [Debugging Axolotl](#debugging-axolotl)
  • [Need Help?](#need-help-)
  • [Badge](#badge-)
  • [Community Showcase](#community-showcase)
  • [Contributing](#contributing-)
  • [Sponsors](#sponsors-)

Axolotl supports

| | fp16/fp32 | lora | qlora | gptq | gptq w/flash attn | flash attn | xformers attn | |-------------|:----------|:-----|-------|------|-------------------|------------|--------------| | llama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Mistral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Mixtral-MoE | ✅ | ✅ | ✅ | ❓ | ❓ | ❓ | ❓ | | Pythia | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❓ | | cerebras | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❓ | | btlm | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❓ | | mpt | ✅ | ❌ | ❓ | ❌ | ❌ | ❌ | ❓ | | falcon | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❓ | | gpt-j | ✅ | ✅ | ✅ | ❌ | ❌ | ❓ | ❓ | | XGen | ✅ | ❓ | ✅ | ❓ | ❓ | ❓ | ✅ | | phi | ✅ | ✅ | ✅ | ❓ | ❓ | ❓ | ❓ | | RWKV | ✅ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | | Qwen | ✅ | ✅ | ✅ | ❓ | ❓ | ❓ | ❓ |

Quickstart ⚡

Get started with Axolotl in just a few steps! This quickstart guide will walk you through setting up and running a basic fine-tuning task.

Requirements: Python >=3.9 and Pytorch >=2.0.

pip3 install "axolotl[flash-attn,deepspeed] @ git+https://github.com/OpenAccess-AI-Collective/axolotl"

For developers

git clone https://github.com/OpenAccess-AI-Collective/axolotl
cd axolotl

pip3 install packaging
pip3 install -e '.[flash-attn,deepspeed]'

Usage

# 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="./lora-out"

# gradio
accelerate launch -m axolotl.cli.inference examples/openllama-3b/lora.yml \
--lora_model_dir="./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/OpenAccess-AI-Collective/axolotl/main/examples/openllama-3b/lora.yml

Installation

Environment

Docker

docker run --gpus '"all"' --rm -it winglian/axolotl:main-py3.10-cu118-2.0.1

Or run on the current files for development:

docker compose up -d

>[!Tip] > If you want to debug axolotl or prefer to use Docker as your development environment, see the [debugging guide's section on Docker](docs/debugging.md#debugging-with-docker).

Docker advanced

A more powerful Docker command to run would be this:

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-py3.10-cu118-2.0.1

It additionally:

  • Prevents memory issues when running e.g. deepspeed (e.g. you could hit SIGBUS/signal 7 error) through --ipc and --ulimit args.
  • Persists the downloaded HF data (models etc.) and your modifications to axolotl code through --mount/-v args.
  • The --name argument simply makes it easier to refer to the container in vscode (Dev Containers: Attach to Running Container...) or in your terminal.
  • The --privileged flag gives all capabilities to the container.
  • The --shm-size 10g argument increases the shared memory size. Use this if you see exitcode: -7 errors using deepspeed.

More information on nvidia website

Conda/Pip venv

1. Install python >=3.9

2. Install pytorch stable https://pytorch.org/get-started/locally/

3. Install Axolotl along with python dependencies

pip3 install packaging
pip3 install -e '.[flash-attn,deepspeed]'

4. (Optional) Login to Huggingface to use gated models/datasets.

huggingface-cli login

Get the token at huggingface.co/settings/tokens

Cloud GPU

For cloud GPU providers that support docker images, use `winglian/axolotl-cloud:main-latest`

Bare Metal Cloud GPU

##### LambdaLabs

Click to Expand

1. Install python

sudo apt update
sudo apt install -y…

Excerpt shown — open the source for the full document.