初始化项目,由ModelHub XC社区提供模型
Model: NotoriousH2/Qwen3-4B-Calendar-Agent-RLVR Source: Original Platform
This commit is contained in:
140
README.md
Normal file
140
README.md
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
license: apache-2.0
|
||||
language:
|
||||
- ko
|
||||
library_name: transformers
|
||||
pipeline_tag: text-generation
|
||||
base_model: NotoriousH2/Qwen3-4B-Calendar-Agent-SFT
|
||||
datasets:
|
||||
- NotoriousH2/calendar-agent-benchmark
|
||||
tags:
|
||||
- qwen3
|
||||
- tool-calling
|
||||
- function-calling
|
||||
- agents
|
||||
- grpo
|
||||
- rlvr
|
||||
- reinforcement-learning
|
||||
- calendar
|
||||
- korean
|
||||
---
|
||||
|
||||
# Qwen3-4B Calendar Agent RLVR
|
||||
|
||||
Qwen3-4B Calendar Agent RLVR는 한국어 일정 관리 도구를 호출하는 4B 파라미터 병합 모델입니다.
|
||||
Calendar 도구의 실행 궤적과 최종 상태를 보상으로 평가하여 GRPO로 학습했습니다.
|
||||
|
||||
다음 행동을 학습 범위에 포함합니다.
|
||||
|
||||
- 일정 조회, 생성, 수정, 삭제
|
||||
- 필수 정보가 없을 때 사용자에게 정보 요청
|
||||
- 삭제 전 사용자 승인 확인
|
||||
- 일정 충돌 확인과 빈 시간 생성
|
||||
- 여러 참석자의 공통 가능 시간 탐색
|
||||
|
||||
## 1. 사용
|
||||
|
||||
저장소 루트에는 병합 모델이 있으며, `adapter/`에는 LoRA 어댑터가 있습니다.
|
||||
|
||||
```python
|
||||
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||||
|
||||
model_id = "NotoriousH2/Qwen3-4B-Calendar-Agent-RLVR"
|
||||
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
||||
model = AutoModelForCausalLM.from_pretrained(
|
||||
model_id,
|
||||
dtype="auto",
|
||||
device_map="auto",
|
||||
)
|
||||
|
||||
tools = [
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "search_events",
|
||||
"description": "지정한 날짜의 일정을 조회합니다.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"date": {"type": "string", "description": "YYYY-MM-DD"}
|
||||
},
|
||||
"required": ["date"],
|
||||
},
|
||||
},
|
||||
}
|
||||
]
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "사용자 요청을 처리하는 데 필요한 일정 도구를 호출하세요.",
|
||||
},
|
||||
{"role": "user", "content": "2039-07-05 일정을 알려줘."},
|
||||
]
|
||||
|
||||
prompt = tokenizer.apply_chat_template(
|
||||
messages,
|
||||
tools=tools,
|
||||
tokenize=False,
|
||||
add_generation_prompt=True,
|
||||
enable_thinking=False,
|
||||
)
|
||||
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
||||
outputs = model.generate(**inputs, max_new_tokens=512)
|
||||
response = outputs[0, inputs.input_ids.shape[1] :]
|
||||
print(tokenizer.decode(response, skip_special_tokens=False))
|
||||
```
|
||||
|
||||
모델은 도구 호출 정보를 생성합니다.
|
||||
호출 실행과 도구 결과 전달은 호스트 애플리케이션에서 처리해야 합니다.
|
||||
|
||||
## 2. 학습 보상
|
||||
|
||||
같은 요청에서 16개 응답을 생성하고, 그룹 안의 보상 차이로 Advantage를 계산했습니다.
|
||||
|
||||
| 보상 | 가중치 | 평가 대상 |
|
||||
|---|---:|---|
|
||||
| 안전 규칙 | 0.25 | 필수 정보와 사용자 승인 준수 |
|
||||
| 절차 진행 | 0.35 | 조회, 확인, 성공한 도구 실행 |
|
||||
| 최종 성공 | 0.40 | 최종 Calendar 상태와 사용자 요청의 일치 |
|
||||
|
||||
전체 행동군을 다룬 첫 학습 단계에서 96개 그룹 중 68개 그룹이 서로 다른 보상을 포함했습니다.
|
||||
최종 성공 여부가 같은 응답도 절차 진행 점수로 구분하여 학습 신호를 구성했습니다.
|
||||
|
||||
## 3. 평가
|
||||
|
||||
400개 합성 시나리오에서 실제 도구 루프를 실행하고 최종 상태를 평가했습니다.
|
||||
|
||||
| 모델 | 유효 도구 호출 | 정책 준수 | Task Success | 평균 도구 호출 |
|
||||
|---|---:|---:|---:|---:|
|
||||
| Qwen3-4B Base | 100.00% | 80.00% | 20.00% | 0.80 |
|
||||
| Calendar Agent SFT | 100.00% | 89.25% | 89.00% | 2.55 |
|
||||
| Calendar Agent RLVR | 100.00% | 99.25% | 99.00% | 2.38 |
|
||||
|
||||
SFT와 사례별로 비교하면 RLVR 모델은 41개 실패를 성공으로 전환했고, 1개 성공을 실패로 전환했습니다.
|
||||
순증은 40개이며 전체 Task Success 차이는 10.00%p입니다.
|
||||
|
||||
템플릿별 Task Success는 다음과 같습니다.
|
||||
|
||||
| 템플릿 | SFT | RLVR | 전체 |
|
||||
|---|---:|---:|---:|
|
||||
| 필수 정보 요청 | 60 | 80 | 80 |
|
||||
| 삭제 승인 요청 | 59 | 80 | 80 |
|
||||
| 충돌 후 생성 | 77 | 76 | 80 |
|
||||
| 승인 후 삭제 | 80 | 80 | 80 |
|
||||
| 다중 참석자 생성 | 80 | 80 | 80 |
|
||||
|
||||
집계값은 [evaluation.json](./evaluation.json)에 있습니다.
|
||||
|
||||
## 4. 행동 사례
|
||||
|
||||
필수 정보가 없는 생성 요청에서는 임의의 시각을 정해 일정을 생성하지 않고 시작 시각과 소요 시간을 요청합니다.
|
||||
|
||||
충돌 시 대체 시간 등록을 승인한 요청에서는 기존 일정을 조회하고 빈 시간을 찾은 뒤, 충돌하지 않는 시간에 일정을 생성합니다.
|
||||
|
||||
## 5. 제한
|
||||
|
||||
이 모델은 `Asia/Seoul` 시간대의 합성 시나리오와 메모리 Calendar 환경에서 학습하고 평가했습니다.
|
||||
실제 일정 서비스의 인증, 권한, 개인정보 처리, 네트워크 장애는 평가 범위에 포함하지 않습니다.
|
||||
|
||||
충돌 후 생성은 SFT 77/80, RLVR 76/80으로 다른 템플릿보다 낮습니다.
|
||||
외부 Calendar 시스템에 적용할 때는 충돌 복구와 도구 오류 이후의 재시도를 별도로 평가해야 합니다.
|
||||
Reference in New Issue
Block a user