--- license: other base_model: Qwen/Qwen3-8B-Base tags: - code - reinforcement-learning - pkpo - livecodebench --- # Qwen3-8B Code PKPO This repo contains a Qwen/Qwen3-8B-Base derivative trained for a small agentic coding experiment using the shared tool path in `agent_core.py` and `shipped_tool.py`. ## Method - Base: `Qwen/Qwen3-8B-Base`. - Prompt/template: custom `......` template saved in the tokenizer. The generation prompt ends with `Assistant: `. - Tool protocol: no system role; instructions are merged into the first user message; strict user/assistant alternation; plain-text `Tool type` and `Tool query` calls. - Training data: `deepmind/code_contests` train split only, filtered to old stdin/stdout problems. The LiveCodeBench eval subset is not used for training. - Reward: binary hidden-test pass/fail. - PKPO: `sloo_minus_one` from the paper for `k >= 2`; centered `k=1` rewards for the first and final stages. No GRPO-style reward normalization is applied. - Schedule actually run: `[1, 8, 1] (shipped: stage1_group3)`. The run was intentionally small to fit the free-credit budget and deadline. Results should be treated as a reproducible experiment, not a leaderboard model. ## Results Evaluation uses `livecodebench/code_generation_lite` `v6`, a fixed subset saved at `eval/eval_subset.json`, temperature 1.0, and the same one-turn tool path used for training. | model | pass@1 estimate | |---|---:| | base before training | 0.1111 | | final merged model | 0.0556 | Raw files: - `eval/baseline_results.json` - `eval/final_results.json` - `eval/eval_subset.json` ## Usage Serve with vLLM: ```bash vllm serve bk1dr/qwen3-8b-code-pkpo --trust-remote-code --max-model-len 8192 ``` Run the shipped tool: ```bash python shipped_tool.py --base-url http://127.0.0.1:8000/v1 --model bk1dr/qwen3-8b-code-pkpo --max-turns 1 --cp < problem.txt ``` ## Run Notes Run pkpo_20260709T184830Z: full PKPO schedule k=1->8->1 with a LoRA checkpoint after every group. The shipped weights are checkpoint 'stage1_group3', selected by validation on the fixed eval subset (per-checkpoint pass@1: {"after_sft": 0.027777777777777776, "stage1_group3": 0.05555555555555555, "stage2_group1": 0.027777777777777776}). The full-schedule endpoint regressed on the subset (see eval/full_schedule_endpoint_results.json); intermediate checkpoint selection is part of the documented training procedure. Selection+merge elapsed 13.3 min on one H100.