Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Safe mode breaks Tinker training, loopback-only hosts crash at deploy, checkpoints unusable from stock Tinker SDK

未关闭
#298 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
30/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
docker, python

调研方向

Three separate problems are reported, so split them before starting. Begin with check_unsafe in src/twinkle/infra/init.py near line 573 and the TWINKLE_TRUST_REMOTE_CODE path, then find_node_ip() in src/twinkle/utils/network.py and the MASTER_ADDR use in ray_helper.py, then checkpoint_manager.py for the twinkle:// paths. Done means forward_backward works with trust off, a loopback-only host deploys, and returned sampler paths are usable by the stock SDK.

由索引模型根据 Issue 内容生成。

描述

bug
  • I have searched existing issues, and this is a new bug report.
Bug Description

Three problems when running Twinkle 0.5.1 in an isolated container and using it from the stock Tinker SDK (source links at v0.5.1):

  1. Safe mode breaks Tinker training.
    • With TWINKLE_TRUST_REMOTE_CODE=0, every forward_backward fails with Twinkle does not support Callable or Type inputs in safe mode. The check is check_unsafe on the remote-call path (infra/init.py#L573).
    • So operators can't turn remote-code trust off, and it defaults to on.
  2. Loopback-only hosts crash at deploy.
    • Under e.g. docker run --network none, find_node_ip() skips every 127.* address and returns None (utils/network.py#L15-L28).
    • That None becomes MASTER_ADDR (ray_helper.py#L336), and the deployment fails with TypeError: runtime_env['env_vars'] must be of type Dict[str, str].
    • Also, .locks is created in the CWD (utils/parallel.py#L9), which fails when the CWD is read-only.
  3. Checkpoints can't be used from the stock Tinker SDK.
    • save_weights_for_sampler() returns twinkle://... paths, which the unpatched SDK rejects (ValueError: Invalid tinker path). There's also no archive/download endpoint.
    • name is ignored, and each save deletes the previous sampler weights (checkpoint_manager.py#L241-L285), so earlier returned paths go stale.
How to Reproduce
  1. Set TWINKLE_TRUST_REMOTE_CODE: "0" in the model deployment's env_vars, then call forward_backward(data, "cross_entropy").
  2. Start ray start --head --node-ip-address=127.0.0.1 and twinkle-server launch inside a --network none container.
  3. With tinker==0.16.1, call get_checkpoint_archive_url_from_tinker_path(tc.save_weights_for_sampler(name="x").result().path).
Additional Information

Suggested fixes:

  1. Exempt Twinkle's built-in loss and template classes from check_unsafe.
  2. In find_node_ip(), fall back to 127.0.0.1 (or the Ray node IP), and put .locks under TWINKLE_HOME or the temp dir.
  3. Return tinker://-compatible paths, add the Tinker archive endpoint, and honour name. That would let separate evaluators load trained adapters without patching the SDK.

Environment: twinkle-kit 0.5.1, ray 2.58.0, Ubuntu 24.04 container, tinker 0.16.1.

主要语言
Python
星标
260
派生
55
平均合并
1 天 11 小时
30 天内合并 PR
15

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

modelscope/twinkle 的其他 Issue

查看 modelscope/twinkle 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。