Đào tạo RL
Hermes Agent bao gồm một hệ thống đào tạo RL (Học tăng cường) tích hợp được xây dựng trên Tinker-Atropos. Điều này cho phép đào tạo các mô hình ngôn ngữ về các tác vụ dành riêng cho môi trường bằng cách sử dụng GRPO (Tối ưu hóa chính sách tương đối nhóm) với bộ điều hợp LoRA, được điều phối hoàn toàn thông qua giao diện công cụ của tác nhân.
Tổng quan
Hệ thống đào tạo RL bao gồm ba thành phần:
- Atropos — Máy chủ API quỹ đạo điều phối các tương tác môi trường, quản lý các nhóm triển khai và tính toán các lợi thế
- Tinker — Một dịch vụ đào tạo xử lý các trọng số mô hình, đào tạo LoRA, lấy mẫu/suy luận và các bước tối ưu hóa
- Môi trường — Các lớp Python xác định nhiệm vụ, chức năng tính điểm và khen thưởng (ví dụ: các bài toán GSM8K)
Tác nhân có thể khám phá môi trường, đặt cấu hình các tham số đào tạo, khởi chạy các đợt đào tạo và giám sát số liệu — tất cả thông qua một bộ công cụ rl_*.
Yêu cầu
Đào tạo RL yêu cầu:
- Python >= 3.11 (Yêu cầu gói Tinker)
- TINKER_API_KEY — Khóa API cho dịch vụ đào tạo Tinker
- WANDB_API_KEY — Khóa API để theo dõi số liệu Trọng số & Xu hướng
- Mô-đun con
tinker-atropos(tạitinker-atropos/so với gốc Hermes)
# Set up API keys
hermes config set TINKER_API_KEY your-tinker-key
hermes config set WANDB_API_KEY your-wandb-key
Khi có cả hai khóa và Python >= 3.11 khả dụng, bộ công cụ rl sẽ tự động được bật.
Công cụ có sẵn
| Công cụ | Mô tả |
|---|---|
rl_list_environments | Khám phá các môi trường RL có sẵn |
rl_select_environment | Chọn một môi trường và tải cấu hình của nó |
rl_get_current_config | Xem các trường có thể định cấu hình và khóa |
rl_edit_config | Sửa đổi các thông số đào tạo có thể cấu hình |
rl_start_training | Khởi động quá trình huấn luyện (sinh ra 3 quy trình) |
rl_check_status | Theo dõi tiến độ đào tạo và số liệu của WandB |
rl_stop_training | Dừng một công việc đào tạo đang chạy |
rl_get_results | Nhận số liệu cuối cùng và đường dẫn trọng số mô hình |
rl_list_runs | Liệt kê tất cả các lần chạy đang hoạt động và đã hoàn thành |
rl_test_inference | Kiểm tra suy luận nhanh bằng OpenRouter |
Quy trình làm việc
1. Khám phá môi trường
List the available RL environments
Tác nhân gọi rl_list_environments() quét tinker-atropos/tinker_atropos/environments/ bằng cách sử dụng phân tích cú pháp AST để tìm các lớp Python kế thừa từ BaseEnv . Mỗi môi trường xác định:
- Tải tập dữ liệu — nơi lấy dữ liệu đào tạo (ví dụ: tập dữ liệu HuggingFace)
- Xây dựng nhanh — cách định dạng các mục cho mô hình
- Chấm điểm/xác minh — cách đánh giá kết quả đầu ra của mô hình và ấn định phần thưởng
2. Chọn và cấu hình
Select the GSM8K environment and show me the configuration
Tác nhân gọi rl_select_environment("gsm8k_tinker") , sau đó gọi rl_get_current_config() để xem tất cả các tham số.
Các trường cấu hình được chia thành hai loại:
Các trường có thể định cấu hình (có thể sửa đổi):
group_size— Số lần hoàn thành trên mỗi mục (mặc định: 16)batch_size— Kích thước lô đào tạo (mặc định: 128)wandb_name— Tên chạy WandB (tự động đặt thành{env}-{timestamp})- Các thông số môi trường cụ thể khácCác trường bị khóa (cài đặt cơ sở hạ tầng, không thể thay đổi):
tokenizer_name— Mã thông báo mô hình (ví dụ:Qwen/Qwen3-8B)rollout_server_url— URL API Atropos (http://localhost:8000)max_token_length— Độ dài mã thông báo tối đa (8192)max_num_workers— Công nhân song song tối đa (2048)total_steps— Tổng số bước đào tạo (2500)lora_rank— Xếp hạng bộ điều hợp LoRA (32)learning_rate— Tỷ lệ học tập (4e-5)max_token_trainer_length— Mã thông báo tối đa cho huấn luyện viên (9000)
3. Bắt đầu luyện tập
Start the training run
Nhân viên gọi rl_start_training():
- Tạo tệp cấu hình YAML hợp nhất các cài đặt bị khóa với các phần ghi đè có thể định cấu hình
- Tạo ID chạy duy nhất
- Sinh ra ba quy trình:
- Máy chủ API Atropos (
run-api) — phối hợp quỹ đạo - Tinker trainer (
launch_training.py) — Đào tạo LoRA + máy chủ suy luận FastAPI trên cổng 8001 - Môi trường (
environment.py serve) — môi trường được chọn kết nối với Atropos
- Máy chủ API Atropos (
Các quy trình bắt đầu với độ trễ so le (5 giây cho API, 30 giây cho huấn luyện viên, thêm 90 giây cho môi trường) để đảm bảo thứ tự khởi tạo phù hợp.
4. Theo dõi tiến độ
Check the status of training run abc12345
Nhân viên gọi rl_check_status(run_id) để báo cáo:
- Trạng thái tiến trình (đang chạy/thoát cho mỗi tiến trình trong số 3 tiến trình)
- Thời gian chạy
- Số liệu WandB (bước, giá trị trung bình phần thưởng, phần trăm chính xác, độ chính xác đánh giá)
- Vị trí tệp nhật ký để gỡ lỗi
Kiểm tra trạng thái được giới hạn tốc độ một lần 30 phút cho mỗi ID lần chạy. Điều này ngăn chặn việc bỏ phiếu quá mức trong các công việc đào tạo kéo dài, mất hàng giờ.
5. Dừng lại hoặc nhận kết quả
Stop the training run
# or
Get the final results for run abc12345
rl_stop_training() chấm dứt cả ba quy trình theo thứ tự ngược lại (môi trường → huấn luyện viên → API). rl_get_results() truy xuất số liệu cuối cùng của WandB và lịch sử đào tạo.
Kiểm tra suy luận
Trước khi bắt đầu quá trình đào tạo đầy đủ, bạn có thể kiểm tra xem môi trường có hoạt động chính xác hay không bằng cách sử dụng rl_test_inference . Quá trình này thực hiện một vài bước suy luận và tính điểm bằng OpenRouter — không cần API Tinker, chỉ cần OPENROUTER_API_KEY .
Test the selected environment with inference
Cấu hình mặc định:
- 3 bước × 16 lần hoàn thành = 48 lần triển khai cho mỗi mô hình
- Kiểm tra độ bền của 3 mô hình ở các quy mô khác nhau:
qwen/qwen3-8b(nhỏ)z-ai/glm-4.7-flash(trung bình)minimax/minimax-m2.7(lớn)
- Tổng cộng: ~144 lượt phát hành
Điều này xác nhận:
- Môi trường tải chính xác
- Thi công nhanh chóng
- Phân tích phản hồi suy luận mạnh mẽ trên các quy mô mô hình
- Logic xác minh/chấm điểm tạo ra phần thưởng hợp lệ
Tích hợp API Tinker
Trình đào tạo sử dụng API Tinker cho các hoạt động đào tạo mô hình:
- ServiceClient — Tạo khách hàng đào tạo và lấy mẫu
- Đào tạo khách hàng — Xử lý các bước tiến-lùi với việc mất mẫu quan trọng, các bước tối ưu hóa (Adam) và điểm kiểm tra trọng số
- Sampling client — Cung cấp suy luận bằng cách sử dụng trọng số được huấn luyện mới nhấtVòng lặp đào tạo:
- Lấy một loạt các bản giới thiệu từ Atropos (nhắc nhở + hoàn thành + điểm số)
- Chuyển đổi sang các đối tượng Tinker Datum với các lợi thế và prob log được đệm
- Chạy tiến-lùi với mức độ mất mẫu quan trọng
- Thực hiện bước tối ưu hóa (Adam: lr=4e-5, β1=0,9, β2=0,95)
- Tiết kiệm trọng số và tạo ứng dụng khách lấy mẫu mới để suy luận ở bước tiếp theo
- Ghi nhật ký số liệu vào WandB
Sơ đồ kiến trúc
Tạo môi trường tùy chỉnh
Để tạo môi trường RL mới:
- Tạo tệp Python trong
tinker-atropos/tinker_atropos/environments/ - Xác định lớp kế thừa từ
BaseEnv - Thực hiện các phương pháp cần thiết:
load_dataset()— Tải dữ liệu đào tạo của bạnget_next_item()— Cung cấp mục tiếp theo cho mô hìnhscore_answer()— Ghi điểm đầu ra của mô hình và ấn định phần thưởngcollect_trajectories()— Thu thập và trả lại quỹ đạo
- Tùy chọn xác định lớp cấu hình tùy chỉnh kế thừa từ
BaseEnvConfig
Nghiên cứu gsm8k_tinker.py hiện có làm mẫu. Tác nhân có thể giúp bạn tạo môi trường mới — nó có thể đọc các tệp môi trường hiện có, kiểm tra bộ dữ liệu HuggingFace và viết mã môi trường mới.
Số liệu của WandB
Nhật ký các lần chạy đào tạo vào Trọng lượng & Xu hướng với các số liệu chính sau:
| Số liệu | Mô tả |
|---|---|
train/loss | Mất đào tạo (lấy mẫu tầm quan trọng) |
train/learning_rate | Tỷ lệ học tập hiện tại |
reward/mean | Phần thưởng trung bình giữa các nhóm |
logprobs/mean | Nhật ký tham chiếu trung bình |
logprobs/mean_training | Nhật ký đào tạo trung bình |
logprobs/diff | Logprob drift (tham khảo - đào tạo) |
advantages/mean | Giá trị lợi thế trung bình |
advantages/std | Lợi thế độ lệch chuẩn |
Tệp nhật ký
Mỗi lần chạy đào tạo sẽ tạo các tệp nhật ký trong ~/.hermes/logs/rl_training/ :
logs/
├── api_{run_id}.log
# Atropos API server logs
├── trainer_{run_id}.log
# Tinker trainer logs
├── env_{run_id}.log
# Environment process logs
└── inference_tests/
# Inference test results
├── test_{env}_{model}.jsonl
└── test_{env}_{model}.log
Đây là những thông tin vô giá để gỡ lỗi khi quá trình đào tạo thất bại hoặc tạo ra kết quả không mong muốn.