Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[Phase 16] S4 — Dependency-range truth for the six advertised trainers

オープン
#890 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
20/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
huggingface, python

調査の方向性

Start with the roadmap plan at docs/roadmap/phase-16-trust-surface-hardening.md lines 385-414, then find where the trainer_type enum is consumed and where the TRL imports happen. The change adds a _import_trl_symbol resolver with an trl.experimental fallback, and routes the four reward paths in forgelm/grpo_rewards.py through _completion_text(). Done means all six trainer types construct args and trainers at the declared minimum and current TRL versions with zero skips under pytest -rs, and the reward parity matrix passes.

索引モデルが issue の本文から書いたものです。

説明

phase: 16 source: roadmap

Roadmap · Phase 16, step S4 · size L · 2 unit(s) · planned in docs/roadmap/phase-16-trust-surface-hardening.md:385-414

Summary

README, the site and the trainer_type enum advertise six alignment methods and both of TRL's data formats; the declared dependency contract delivers neither. ORPOConfig, CPOConfig, ORPOTrainer and CPOTrainer are absent from the top-level trl namespace across the whole declared trl>=1.0.0,<2.0.0 range (checked on the 1.0.0, 1.7.1 and 1.9.2 wheels), so pinning an upper bound cannot fix it. Separately, TRL hands conversational completions to custom rewards as message lists, and all four built-in reward paths assume str.

Units

Unit Tracked by (October 2026 review)
F-W20260729-GAP-03 #105 · #106
F-W20260729-CORE-02 #476 · #708

Decisions this step executes

  • C-10 — ORPO / SimPO on a dependency range that exports neither: route through trl.experimental.

Plan

  • Add a version-aware _import_trl_symbol resolver that falls back to trl.experimental.orpo / trl.experimental.cpo, logs one INFO line per fallback naming the instability, and raises an actionable config-error-shaped failure naming the installed trl.__version__ when neither location works. Never set TRL_EXPERIMENTAL_SILENCE (a silent import fallback).
  • Add _completion_text() to forgelm/grpo_rewards.py as the single canonicalisation point, with a documented policy, and route all four reward paths through it. Never str(list).

Exit criteria

  • All six trainer_type values construct training args and a trainer at both the declared minimum and the resolver-current endpoint with zero skips (asserted with pytest -rs).
  • A missing advertised trainer class fails; it never pytest.skip()s.
  • A parity matrix proves f(['…']) == f([[{'role':'assistant','content':'…'}]]) for all four reward paths, and flat-string outcomes are byte-identical to the baseline.
  • Two real dependency resolutions (declared minimum and current endpoint) run in CI with the zero-skip assertion enforced.

How to deliver

  • One root-cause family, committed on its own; then an Opus review round and a Sonnet review round, each with verified findings fixed and committed before the next step begins.
  • A reproducer that is red before the fix and green after; the full gauntlet from CLAUDE.md passes under ./.venv/bin/python.
  • Every English documentation edit ships with its Turkish mirror in the same commit; a new or renamed audit event gets its EN and TR catalog rows in the same PR.
  • A step that grows a deferred module carries its budget_history justification in the same diff; a widened guard rolls out non-strict first, then flips.
  • Commit bodies cite Absorbs F-W20260729-…; the CHANGELOG [Unreleased] section gets an entry only for a change a user or library consumer can observe (decision C-20).

Planned in docs/roadmap/phase-16-trust-surface-hardening.md (read at f94595f). Unit IDs (F-W20260729-…) come from the 2026-07-29/30 full-project review; the issue numbers next to them are the October 2026 review's records of the same defects.

主要言語
Python
スター
9
フォーク
1
平均マージ
8時間 10分
マージ済み PR(30日)
5

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

HodeTech/ForgeLM のほかの issue

HodeTech/ForgeLM の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。