LlamaFactory
hiyouga/LlamaFactory/.github/copilot-instructions.md
LLaMA Factory is an efficient fine-tuning framework for 100+ large language models (LLMs). It provides: - Support for various models: LLaMA, LLaVA, Mistral, Qwen, DeepSeek, Yi, Gemma, ChatGLM, Phi, etc. - Multiple training methods: pre-training, supervised fine-tuning, reward modeling, PPO, DPO, KTO, ORPO - Scalable resources: 16-bit full-tuning, freeze-tuning, LoRA and QLoRA variants - Advanced algorithms: GaLore, BAdam, APOLLO, Adam-mini, Muon, OFT, DoRA, etc. - Web UI (LLaMA Board) and CLI interfaces LLaMA Factory has two parallel architectures that can…
- Installs packages
What's in it
- GitHub Copilot Instructions for LLaMA Factory
- Project Overview
- Architecture Versions
- Code Structure
- v0 Architecture (Default)
- v1 Architecture (USEV1=1)
- Development Practices
- Code Style
- Import Organization
- Quality Checks
- Testing
- Building
- License
- Common Patterns
- Configuration Files
- Model Support
- Data Processing
- Training
- Key Dependencies
- Entry Points
- Environment Setup
- Important Notes
- Contribution Guidelines
- Common Commands
# GitHub Copilot Instructions for LLaMA Factory ## Project Overview LLaMA Factory is an efficient fine-tuning framework for 100+ large language models (LLMs). It provides: - Support for various models: LLaMA, LLaVA, Mistral, Qwen, DeepSeek, Yi, Gemma, ChatGLM, Phi, etc. - Multiple training methods: pre-training, supervised fine-tuning, reward modeling, PPO, DPO, KTO, ORPO - Scalable resources: 16-bit full-tuning, freeze-tuning, LoRA and QLoRA variants - Advanced algorithms: GaLore, BAdam, APOLLO, Adam-mini, Muon, OFT, DoRA, etc. - Web UI (LLaMA Board) and CLI interfaces ### Architecture Versions LLaMA Factory has two parallel architectures that can be switched via the `USE_V1` environment variable: **v0 (default)** - File hierarchy: - `api`, `webui` → `chat`, `eval`, `train` → `data`, `model` → `hparams` → `extras` **v1** - File hierarchy: - `trainers` → `core` → `accelerator`, `plugins`, `config` → `utils` Set `USE_V1=1` to enable v1 architecture. ## Code Structure ### v0 Architecture (Default) - `src/llamafactory/` - Main package directory - `api/` - OpenAI-style API implementation - `chat/` - Chat interface implementation - `cli.py` - Command-line interface - `data/` - Data processing and dataset handling - `eval/` - Model evaluation utilities - `extras/` - Additional utilities and helpers - `hparams/` - Hyperparameter definitions - `model/` - Model loading, patching, and utilities - `train/` - Training pipeline implementation - `webui/` - Gradio-based web interface - `src/train.py` - Training entry script (delegates to `llamafactory.train.tuner`) - `src/webui.py` - Web UI entry script (delegates to `llamafactory.webui.interface`) - `src/api.py` - API server entry script (delegates to `llamafactory.api.app`) - `tests/` - Test suite - `examples/` - Example configurations for various training scenarios - `data/` - Dataset definitions and examples ### v1 Architecture (USE_V1=1) - `src/llamafactory/v1/` - Version 1 package directory - `trainers/` - Training implementations - `core/` - Core training utilities - `accelerator/` - Acceleration and distributed training - `plugins/` - Pluggable components (model, data, sampler, trainer) - `config/` - Configuration management - `utils/` - Utility functions ## Development Practices ### Code Style - Follow the [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html) - Use ruff for linting and formatting - Line length: 119 characters - Indentation: 4 spaces - Quote style: double quotes - Use Google-style docstrings for documentation ### Import Organization - Known first-party: `llamafactory` - Known third-party: `accelerate`, `datasets`, `gradio`, `numpy`, `peft`, `torch`, `transformers`, `trl` - Use 2 blank lines after imports ### Quality Checks Before committing code, run: ```bash make style # Auto-fix style issues make quality # Check code quality make test # Run test suite ``` Or use the combined command: ```bash make commit # Run pre-commit hooks ``` ### Testing - Use pytest for testing - Tests are located in `tests/` and `tests_v1/` directories - Run tests with: `make test` (which runs `WANDB_DISABLED=true pytest -vv --import-mode=importlib tests/ tests_v1/`) - Disable wandb during testing to avoid external dependencies - **Note**: Training configurations require GPU machines, so training is typically not tested end-to-end. Use `make test` to validate file-level functionality. ### Building Build the package with: ```bash pip3 install build && python3 -m build ``` ### License - All source files must include the Apache 2.0 license header - Check license headers with: `make license` ## Common Patterns ### Configuration Files - Training configurations are typically YAML or JSON files in `examples/` directory - Hyperparameters are defined using dataclasses in `src/llamafactory/hparams/` ### Model Support - New model support is added through model patches in `src/llamafactory/model/` - Visual models use the visual utilities in `src/llamafactory/model/model_utils/visual.py` - Quantization support is in `src/llamafactory/model/model_utils/quantization.py` ### Data Processing - Dataset definitions are in `data/dataset_info.json` - Data templates and processors are in `src/llamafactory/data/` ### Training - Training pipelines are in `src/llamafactory/train/` - Support for different training methods: SFT, DPO, PPO, RM, PT, KTO, ORPO ## Key Dependencies - Python >= 3.9.0 - PyTorch and transformers for model handling - datasets for data processing - peft for parameter-efficient fine-tuning - accelerate for distributed training - gradio for web UI - trl for reinforcement learning - Optional: vllm/sglang for inference, flash-attention-2, unsloth, liger-kernel ## Entry Points - **CLI Training**: `llamafactory-cli train --config examples/train_lora/llama3_lora_sft.yaml` - **Web UI**: `llamafactory-cli webui` or `python src/webui.py` - **API Server**: `llamafactory-cli api` or `python src/api.py` - **Chat Interface**: `llamafactory-cli chat --model_name_or_path MODEL_PATH` ## Environment Setup For development: ```bash pip install -e ".[dev]" ``` ## Important Notes - The project supports multiple backends: default PyTorch, vLLM, SGLang - Megatron-core training is supported via mcore_adapter - SwanLab and W&B are supported for experiment tracking - Docker support is available with pre-built images - Day-0/Day-1 support for latest cutting-edge models - Multi-modal support for vision and audio understanding tasks ## Contribution Guidelines 1. Fork the repository 2. Create a development branch 3. Set up development environment with `pip install -e ".[dev]"` 4. Make changes following the style guide 5. Run quality checks: `make style && make quality` 6. Run tests: `make test` 7. Submit a pull request ## Common Commands - `make style` - Format code - `make quality` - Run linters - `make test` - Run tests - `make commit` - Install and run pre-commit hooks - `make license` - Check license headers
More agent context in hiyouga/LlamaFactory
4 other files this repository gives its agents.
CLAUDE.md
Skill
- llamafactory-sft.claude/skills/llamafactory-sft/SKILL.md
- llamafactory-v1-docs.claude/skills/llamafactory-v1-docs/SKILL.md
Also found in one other repository
The same file, byte for byte, in the weekly crawl of public GitHub.
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

