A production-ready training framework for Large Language Models (LLM) and Vision Language Models (VLM).
Features • Installation • Quick Start • Examples • Documentation • Testing
Modular training stages, multi-GPU execution, and production-friendly tooling for scalable model development.
- Multiple Training Stages: Pre-training, Supervised Fine-Tuning (SFT), Direct Preference Optimization (DPO), Proximal Policy Optimization (PPO), Group Relative Policy Optimization (GRPO)
- Multi-GPU Support: DeepSpeed (ZeRO-0/1/2/3), PyTorch DDP, Single GPU
- Flexible Configuration: Intuitive dataclass-based configuration system
- Production Ready: Built for real-world deployment with checkpointing, logging, and evaluation
- Vision Support: First-class support for Vision-Language models
git clone https://github.com/yourusername/xModelFactory.git
cd xModelFactory
pip install -e .# With DeepSpeed support
pip install -e ".[deepspeed]"
# With all optional dependencies
pip install -e ".[all]"from xmodel_factory import ModelConfig, TrainConfig, Trainer
# Configure model
model_config = ModelConfig(
vocab_size=32000,
hidden_size=4096,
num_hidden_layers=32,
num_attention_heads=32,
)
# Configure training
train_config = TrainConfig(
n_epochs=3,
batch_size=4,
model_config=model_config,
)
# Train
trainer = Trainer(
train_config=train_config,
eval_prompts=["Hello, world!"]
)
trainer.train()# Automatic selection (recommended)
smart_train train.py
# Force DeepSpeed
ds_train train.py
# Force DDP
ddp_train train.py
# Single GPU
py_train train.pypython examples/check_gpu.pyxModelFactory/
├── xmodel_factory/ # Main package
│ ├── model_core/ # Model definitions
│ │ ├── __init__.py
│ │ └── attention_masks.py
│ └── train_core/ # Training framework
│ ├── __init__.py
│ ├── base_trainer.py
│ ├── trainer.py # Pre-training
│ ├── sft_trainer.py # SFT
│ ├── dpo_trainer.py # DPO
│ ├── ppo_trainer.py # PPO
│ ├── grpo_trainer.py # GRPO
│ ├── train_configs.py
│ ├── parallel.py # Multi-GPU support
│ └── tools.py
├── examples/ # Example scripts
│ ├── check_gpu.py
│ ├── simple_pretrain.py
│ ├── simple_sft.py
│ ├── simple_dpo.py
│ └── simple_grpo.py
├── scripts/ # Training launchers
│ ├── smart_train
│ ├── ds_train
│ ├── ddp_train
│ └── py_train
├── tests/ # Unit tests
├── docs/ # Documentation
├── setup.py
├── pyproject.toml
├── requirements.txt
└── README.md
from xmodel_factory import ModelConfig, TrainConfig, Trainer
model_config = ModelConfig(vocab_size=32000, hidden_size=512, num_hidden_layers=4)
train_config = TrainConfig(n_epochs=2, batch_size=4, model_config=model_config)
trainer = Trainer(train_config=train_config, eval_prompts=["Test"])
trainer.train()from xmodel_factory import SFTTrainer, SFTConfig
train_config.sft_config = SFTConfig(mask_prompt=True)
trainer = SFTTrainer(train_config=train_config, eval_prompts=["Instruction: ..."])
trainer.train()from xmodel_factory import DPOTrainer, DPOConfig
train_config.dpo_config = DPOConfig(loss_beta=0.1)
trainer = DPOTrainer(train_config=train_config, eval_prompts=["Prompt"])
trainer.train()from xmodel_factory import GRPOTrainer, GRPOConfig
def reward_func(prompts, completions, answers):
return [1.0 if "correct" in c else 0.0 for c in completions]
train_config.grpo_config = GRPOConfig(group_size=12)
trainer = GRPOTrainer(
train_config=train_config,
reward_func=reward_func,
eval_prompts=["Question: ..."]
)
trainer.train()The smart_train script automatically selects the best parallel strategy:
smart_train examples/simple_pretrain.pyPriority:
- DeepSpeed (if installed)
- PyTorch DDP (if multiple GPUs available)
- Single GPU/CPU (fallback)
# DeepSpeed with ZeRO-3
ds_train train.py
# PyTorch DDP
ddp_train train.py
# Single device
py_train train.py# Set parallel type manually
export PARALLEL_TYPE=ds # ds, ddp, or none
# DeepSpeed specific
export TOKEN_DIR=/path/to/tokenizer
export LOG_DIR=/path/to/logsfrom xmodel_factory import ModelConfig
config = ModelConfig(
vocab_size=32000,
hidden_size=4096,
num_hidden_layers=32,
num_attention_heads=32,
intermediate_size=11008,
max_position_embeddings=4096,
)from xmodel_factory import DsConfig, DsZero2Config, DsZero3Config
# ZeRO-2
ds_config = DsConfig(zero_config=DsZero2Config())
# ZeRO-3 with offload
ds_config = DsConfig(
zero_config=DsZero3Config(
offload_optimizer=DsOffloadConfig(device='cpu'),
offload_param=DsOffloadConfig(device='cpu'),
)
)# Run all tests
pytest tests/
# Run specific test
pytest tests/test_trainer.py
# Check GPU setup
python examples/check_gpu.py- Python >= 3.8
- PyTorch >= 2.0.0
- CUDA >= 11.7 (for GPU support)
Optional:
- DeepSpeed >= 0.12.0 (for distributed training)
- lion-pytorch >= 0.1.0 (for Lion optimizer)
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
If you use xModelFactory in your research, please cite:
@software{xmodelfactory2026,
title={xModelFactory: A Comprehensive Training Framework for LLM and VLM},
author={xiong xin},
year={2026},
url={https://github.com/yourusername/xModelFactory}
}- Built on PyTorch
- Distributed training powered by DeepSpeed
- Inspired by Hugging Face Transformers
