starforge-core 就能用。
安装
catalog 里的镜像都自带。自定义镜像里:三条设计约束——它们会影响你的用法
绝不抛异常
回传是旁路。采集挂了,训练照常跑。你不需要给这些调用套
try。没凭据就是空操作
同一个脚本在本机跑什么都不做,也不产生任何网络请求,所以不需要维护一个单独的「本地模式」分支。
哪都能 import
只依赖标准库。不会因为镜像里没装
requests 而 import 失败。init()
False,这不是错误。幂等:调两次是安全的,
第二次传 hparams 会把新的补进去。
Mapping
给控制台「配置」面板用的超参。嵌套字典会用点号摊平,
{"policy": {"lr": 1e-6}} 变成 policy.lr。bool
默认值:"True"
启一个后台线程采集 GPU 利用率、显存和网络,供「系统」页展示。
如果作业里已经有别的东西在上报硬件,设成
False。float
默认值:"10"
硬件采样间隔(秒)。
STARFORGE_MONITOR_INTERVAL 可以覆盖默认值。log()
step 时用内部计数器递增,这正是奖励函数里想要的行为:那里根本没有全局 step 的概念。
log_hparams() 与 finish()
log_hparams 在 init 之后往配置面板里补内容。finish 停止硬件采集并把缓冲区刷干净;
它是幂等的,也注册进了 atexit,所以正常退出的脚本严格来说可以不调用它。
还是调一下:进程在 atexit 执行前被杀掉时,缓冲区里剩的东西就丢了。
Hugging Face 与 TRL
init、每个 log step 的 log 和结束时的 finish。
对任何 transformers.Trainer 以及所有基于它的 TRL trainer 都适用。
transformers.TrainerCallback——Hugging Face 是按方法名调用回调的,鸭子类型就够了;
不继承还能让 starforge.report 在没装 transformers 的镜像里照样 import。
确认成功
提交作业,打开 Charts 页。第一次log() 之后几秒内就会出现数据点。
如果日志在滚而曲线一直是空的,说明回传代码没跑到。进容器里确认:
1 但仍然没有点,说明 init() 根本没被执行到——在它旁边加一行 print 重新提交。
SDK 的其余部分
starforge.report 是公开接口。这个包同时导出 JobSpec 契约类型(JobSpec、Recipe、ResourceSpec 等)
以及 Reporter——平台自己的框架桥所用的底层客户端。它们分别记录在
ingest 契约和 JobSpec:
写框架适配器时才需要,给训练脚本加埋点时不需要。