Skip to main content

A toolkit for efficiently fine-tuning LLM

Project description



license PyPI Generic badge

English | 简体中文

👋 join us on Twitter, Discord and WeChat

🎉 News

  • [2023.08.30] XTuner is released, with multiple fine-tuned adapters on HuggingFace.

📖 Introduction

XTuner is a toolkit for efficiently fine-tuning LLM, developed by the MMRazor and MMDeploy teams.

  • Efficiency: Support LLM fine-tuning on consumer-grade GPUs. The minimum GPU memory required for 7B LLM fine-tuning is only 8GB, indicating that users can use nearly any GPU (even the free resource, e.g., Colab) to fine-tune custom LLMs.
  • Versatile: Support various LLMs (InternLM, Llama2, ChatGLM2, Qwen, Baichuan, ...), datasets (MOSS_003_SFT, Alpaca, WizardLM, oasst1, Open-Platypus, Code Alpaca, Colorist, ...) and algorithms (QLoRA, LoRA), allowing users to choose the most suitable solution for their requirements.
  • Compatibility: Compatible with DeepSpeed 🚀 and HuggingFace 🤗 training pipeline, enabling effortless integration and utilization.

🌟 Demos

  • QLoRA Fine-tune Open In Colab
  • Plugin-based Chat Open In Colab
  • Ready-to-use models and datasets from XTuner API Open In Colab

🔥 Supports

Models SFT Datasets Data Pipelines Algorithms

🛠️ Quick Start

Installation

Install XTuner with pip

pip install xtuner

or from source

git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e .

Chat Open In Colab

Examples of Plugins-based Chat 🔥🔥🔥

XTuner provides tools to chat with pretrained / fine-tuned LLMs.

  • For example, we can start the chat with Llama2-7B-Plugins by

    xtuner chat hf meta-llama/Llama-2-7b-hf --adapter xtuner/Llama-2-7b-qlora-moss-003-sft --bot-name Llama2 --prompt-template moss_sft --with-plugins calculate solve search --command-stop-word "<eoc>" --answer-stop-word "<eom>" --no-streamer
    

For more examples, please see chat.md.

Fine-tune Open In Colab

XTuner supports the efficient fine-tune (e.g., QLoRA) for LLMs.

  • Step 0, prepare the config. XTuner provides many ready-to-use configs and we can view all configs by

    xtuner list-cfg
    

    Or, if the provided configs cannot meet the requirements, please copy the provided config to the specified directory and make specific modifications by

    xtuner copy-cfg ${CONFIG_NAME} ${SAVE_DIR}
    
  • Step 1, start fine-tuning. For example, we can start the QLoRA fine-tuning of InternLM-7B with oasst1 dataset by

    # On a single GPU
    xtuner train internlm_7b_qlora_oasst1_e3
    # On multiple GPUs
    (DIST) NPROC_PER_NODE=${GPU_NUM} xtuner train internlm_7b_qlora_oasst1_e3
    (SLURM) srun ${SRUN_ARGS} xtuner train internlm_7b_qlora_oasst1_e3 --launcher slurm
    

    For more examples, please see finetune.md.

Deployment

  • Step 0, convert the pth adapter to HuggingFace adapter, by

    xtuner convert adapter_pth2hf \
        ${CONFIG} \
        ${PATH_TO_PTH_ADAPTER} \
        ${SAVE_PATH_TO_HF_ADAPTER}
    

    or, directly merge the pth adapter to pretrained LLM, by

    xtuner convert merge_adapter \
        ${CONFIG} \
        ${PATH_TO_PTH_ADAPTER} \
        ${SAVE_PATH_TO_MERGED_LLM} \
        --max-shard-size 2GB
    
  • Step 1, deploy fine-tuned LLM with any other framework, such as LMDeploy 🚀.

    pip install lmdeploy
    python -m lmdeploy.pytorch.chat ${NAME_OR_PATH_TO_LLM} \
        --max_new_tokens 256 \
        --temperture 0.8 \
        --top_p 0.95 \
        --seed 0
    

    🎯 We are woking closely with LMDeploy, to implement the deployment of plugins-based chat!

Evaluation

  • We recommend using OpenCompass, a comprehensive and systematic LLM evaluation library, which currently supports 50+ datasets with about 300,000 questions.

🤝 Contributing

We appreciate all contributions to XTuner. Please refer to CONTRIBUTING.md for the contributing guideline.

🎖️ Acknowledgement

License

This project is released under the Apache License 2.0. Please also adhere to the Licenses of models and datasets being used.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xtuner-0.1.0.tar.gz (107.9 kB view details)

Uploaded Source

Built Distribution

xtuner-0.1.0-py3-none-any.whl (551.8 kB view details)

Uploaded Python 3

File details

Details for the file xtuner-0.1.0.tar.gz.

File metadata

  • Download URL: xtuner-0.1.0.tar.gz
  • Upload date:
  • Size: 107.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.17

File hashes

Hashes for xtuner-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e9f4531d83ab94fd08daf5c7ebfdd8928ec2f81343172f105d0f12cbf138e8fe
MD5 0042d0c23eb0eeb6a8f843d684181331
BLAKE2b-256 f20855f9daa2feab93ee9af4eaac031dda34bcf82f14b2aa6a7f8cac67d1819a

See more details on using hashes here.

File details

Details for the file xtuner-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: xtuner-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 551.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.17

File hashes

Hashes for xtuner-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6129b2bbfc04205279e5e93cc1dfe1b3e0c20115705149becf48ba2f255f9cd0
MD5 2d5d533cf5b5914249b5a9e8021c0f21
BLAKE2b-256 1f5edb35b1e059bdc76397d538a71ade76672c52765e9be10a77ce52dcb161e0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page