Đào tạo Simpo - Tối ưu hóa tùy chọn đơn giản để căn chỉnh LLM
{/* Trang này được tạo tự động từ SKILL.md của kỹ năng bởi website/scripts/generate-skill-docs.py. Chỉnh sửa nguồn SKILL.md, không phải trang này. */}`#Đào tạo Simpo
Tối ưu hóa tùy chọn đơn giản để căn chỉnh LLM. Giải pháp thay thế không cần tham chiếu cho DPO với hiệu suất tốt hơn (+6,4 điểm trên AlpacaEval 2.0). Không cần mô hình tham chiếu, hiệu quả hơn DPO. Sử dụng để căn chỉnh tùy chọn khi muốn đào tạo đơn giản hơn, nhanh hơn DPO/PPO.
Siêu dữ liệu kỹ năng
| Nguồn | Tùy chọn — cài đặt với |
| `Hermes skills install official/mlops/simpo | |
| ` | |
| Đường dẫn |
optional-skills/mlops/simpo ` | | Phiên bản |
1.0.0 ` | | Tác giả | Nghiên cứu dàn nhạc | | Giấy phép | MIT | | Phụ thuộc |
torch
, `transformers
, `datasets
, `trl
,
accelerate |
| Nền tảng | Linux, macOS, Windows |
| Thẻ |
Post-Training
, `SimPO
, `Preference Optimization
, `Alignment
, `DPO Alternative
, `Reference-Free
, `LLM Alignment
,
Efficient Training |
Tham khảo: đầy đủ SKILL.md
Sau đây là định nghĩa kỹ năng đầy đủ mà Hermes tải khi kỹ năng này được kích hoạt. Đây là những gì tác nhân coi là hướng dẫn khi kỹ năng được kích hoạt.
SimPO - Tối ưu hóa tùy chọn đơn giản
Bắt đầu nhanh
SimPO là phương pháp tối ưu hóa tùy chọn không có tham chiếu, hoạt động tốt hơn DPO mà không cần mô hình tham chiếu.
Cài đặt:
`
# Create environment
conda create -n simpo Python=3.10 && conda activate simpo
# Install PyTorch 2.2.2
# Visit: https://pytorch.org/get-started/locally/
# Install alignment-handbook
git clone https://GitHub.com/huggingface/alignment-handbook.git
cd alignment-handbook
Python -m pip install .
# Install Flash Attention 2
Python -m pip install flash-attn --no-build-isolation
`
``**Đào tạo** (Mistral 7B):
`
``` bash
ACCELERATE_LOG_LEVEL=info accelerate launch \
--config_file accelerate_configs/deepspeed_zero3.YAML \
scripts/run_simpo.py \
training_configs/Mistral-7b-base-simpo.YAML
`
## Quy trình công việc chung
### Workflow 1: Train từ model cơ bản (Mistral 7B)
**Cấu hình** (
`Mistral-7b-base-simpo.YAML
):
`
``` yaml
# Model
model_name_or_path: Mistralai/Mistral-7B-v0.1
torch_dtype: bfloat16
# Dataset
dataset_mixer:
HuggingFaceH4/ultrafeedback_binariZed: 1.0
dataset_splits:
- train_prefs
- test_prefs
# SimPO hyperparameters
beta: 2.0 # Reward scaling (2.0-10.0)
gamma_beta_ratio: 0.5 # Target margin (0-1)
loss_type: sigmoid # sigmoid or hinge
sft_weight: 0.0 # Optional SFT regularization
# Training
learning_rate: 5e-7 # Critical: 3e-7 to 1e-6
num_train_epochs: 1
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
# Output
output_dir: ./outputs/Mistral-7b-simpo
`
``**Đào tạo khởi động**:
`
``` bash
accelerate launch --config_file accelerate_configs/deepspeed_zero3.YAML \
scripts/run_simpo.py training_configs/Mistral-7b-base-simpo.YAML
`
### Workflow 2: Tinh chỉnh mô hình hướng dẫn (Llama 3 8B)
**Cấu hình** (
`Llama3-8b-instruct-simpo.YAML
):
`
`YAML
model_name_or_path: meta-Llama/Meta-Llama-3-8B-Instruct`dataset_mixer:
argilla/ultrafeedback-binariZed-preferences-cleaned: 1.0`beta: 2.5
gamma_beta_ratio: 0.5
learning_rate: 5e-7
sft_weight: 0.1 # Add SFT loss to preserve capabilities`num_train_epochs: 1
per_device_train_batch_size: 2
gradient_accumulation_steps: 4
output_dir: ./outputs/Llama3-8b-simpo
`
``**Khởi động**:
`
`bash
accelerate launch --config_file accelerate_configs/deepspeed_zero3.YAML \
scripts/run_simpo.py training_configs/Llama3-8b-instruct-simpo.YAML
`
### Workflow 3: Nhiệm vụ đòi hỏi nhiều suy luận (LR thấp hơn)
**Đối với các tác vụ toán/mã**:
`
`YAML
model_name_or_path: DeepSeek-ai/DeepSeek-math-7b-base`dataset_mixer:
argilla/distilabel-math-preference-dpo: 1.0`beta: 5.0 # Higher for stronger Signal
gamma_beta_ratio: 0.7 # Larger margin
learning_rate: 3e-7 # Lower LR for reasoning
sft_weight: 0.0`num_train_epochs: 1
per_device_train_batch_size: 1
gradient_accumulation_steps: 16
`
## Khi nào nên sử dụng so với các lựa chọn thay thế`**Sử dụng SimPO khi**:
- Muốn đào tạo đơn giản hơn DPO (không có mô hình tham khảo)
- Có dữ liệu ưu tiên (cặp được chọn/từ chối)
- Cần hiệu suất tốt hơn DPO
- Tài nguyên tính toán hạn chế
- Đào tạo một nút đủ`**Lựa chọn thuật toán**:
- **SimPO**: Đơn giản nhất, hiệu suất tốt nhất, không có mẫu tham chiếu
- **DPO**: Cần đường cơ sở của mô hình tham chiếu, thận trọng hơn
- **PPO**: Kiểm soát tối đa, cần mô hình khen thưởng, thiết lập phức tạp
- **GRPO**: RL tiết kiệm bộ nhớ, không có chỉ trích`**Thay vào đó hãy sử dụng các lựa chọn thay thế**:
- **OpenRLHF**: Đào tạo phân tán nhiều nút, PPO/GRPO
- **TRL**: Cần nhiều phương thức trong một khung
- **DPO**: So sánh cơ sở đã được thiết lập
## Các vấn đề thường gặp`**Vấn đề: Sự phân kỳ tổn thất**
Giảm tỷ lệ học tập:
`
``` yaml
learning_rate: 3e-7 # Reduce from 5e-7
`
``Giảm beta:
`
`YAML
beta: 1.0 # Reduce from 2.0
`
``**Vấn đề: Mô hình quên khả năng**
Thêm chính quy hóa SFT:
`
`YAML
sft_weight: 0.1 # Add SFT loss component
`
``**Vấn đề: Phân tách ưu tiên kém**
Tăng beta và ký quỹ:
`
`YAML
beta: 5.0 # Increase from 2.0
gamma_beta_ratio: 0.8 # Increase from 0.5
`
``**Vấn đề: OOM trong quá trình đào tạo**
Giảm kích thước lô:
`
`YAML
per_device_train_batch_size: 1
gradient_accumulation_steps: 16 # Maintain effective batch
`
``Bật tính năng kiểm tra độ dốc:
`
`YAML
gradient_checkpointing: true
`
## Chủ đề nâng cao`**Hàm mất mát**: Xem [references/loss-functions.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/mlops/simpo/references/loss-functions.md) để biết mất sigmoid và mất bản lề, công thức toán học và thời điểm sử dụng từng loại.
**Điều chỉnh siêu tham số**: Xem [references/hyperparameters.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/mlops/simpo/references/hyperparameters.md) để biết beta, gamma, hướng dẫn lựa chọn tốc độ học tập và các đề xuất dành riêng cho kích thước mô hình.
**Chuẩn bị tập dữ liệu**: Xem [references/datasets.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/mlops/simpo/references/datasets.md) để biết các định dạng dữ liệu ưu tiên, lọc chất lượng và tạo tập dữ liệu tùy chỉnh.
## Yêu cầu về phần cứng
- **GPU**: Nên dùng NVIDIA A100/H100
- **VRAM**:
- Model 7B: 1× A100 40GB (DeepSpeed ZeRO-3)
- Model 8B: 2× A100 40GB
- Model 70B: 8× A100 80GB
- **Nút đơn**: Đủ DeepSpeed ZeRO-3
- **Độ chính xác hỗn hợp**: Khuyến nghị BF16`**Tối ưu hóa bộ nhớ**:
- DeepSpeed ZeRO-3 (cấu hình mặc định)
- Điểm kiểm tra độ dốc
- Chú ý chớp nhoáng 2
## Tài nguyên
- Giấy: https://arxiv.org/abs/2405.14734 (NeurIPS 2024)
- GitHub: https://GitHub.com/princeton-nlp/SimPO
- Người mẫu: https://huggingface.co/princeton-nlp
- Sổ tay căn chỉnh: https://GitHub.com/huggingface/alignment-handbook