切分语料并在真实 GPU 上继续训练,验证权重与格式
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xiciyang/training-pretrain该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 46 处,展示前 31 条)
- 读取本地文件src/index.mjs:67
if (!existsSync(p)) continue - 读取本地文件src/index.mjs:68
const text = readFileSync(p, 'utf8') - 读取本地文件src/core.mjs:33
function schemaPath() { return existsSync(SCHEMA_FILE) ? SCHEMA_FILE : null } - 读取本地文件src/core.mjs:47
return readFileSync(file, 'utf8').split('\n').filter((l) => l.trim()).map((l) => JSON.parse(l)) - 读取本地文件src/core.mjs:88
if (!existsSync(lineageFile) || !existsSync(shardsFile)) throw new ToolError(ERROR_CODES.E_CORPUS_INVALID, { hint: `语料目录不完整(缺 lineage.json 或 shards.js - 读取本地文件src/core.mjs:89
const lineage = JSON.parse(readFileSync(lineageFile, 'utf8')) - 读取本地文件src/core.mjs:91
const shardsMeta = JSON.parse(readFileSync(shardsFile, 'utf8')) - 读取本地文件src/core.mjs:95
if (!existsSync(join(baseModel, 'config.json'))) throw new ToolError(ERROR_CODES.E_BASE_MODEL_NOT_FOUND, { hint: `基座模型目录不合法:${baseModel}`, recoverable - 写入本地文件src/core.mjs:447
writeFileSync(join(run.runDir, 'eval-result.json'), `${JSON.stringify(evalResult, null, 2)}\n`) - 执行外部命令固定命令src/core.mjs:575
try { gpu = execFileSync('nvidia-smi', ['--query-gpu=name,driver_version', '--format=csv,noheader'], { encoding: 'utf8', timeout: 20000 }).trim() } ca - 执行外部命令固定命令src/core.mjs:577
try { imageId = execFileSync('docker', ['images', '-q', TRAINING_IMAGE], { encoding: 'utf8', timeout: 20000 }).trim() || null; imageOk = Boolean(image - 读取本地文件src/serving-client.mjs:23
if (existsSync(cfg)) { - 读取本地文件src/serving-client.mjs:24
const p = readFileSync(cfg, 'utf8').trim() - 读取本地文件src/serving-client.mjs:25
if (p && existsSync(p)) return { root: p, serverPath: join(p, 'mcp', 'server.mjs'), from: 'config file', tried } - 读取本地文件src/serving-client.mjs:31
if (existsSync(join(cand, 'mcp', 'server.mjs'))) return { root: cand, serverPath: join(cand, 'mcp', 'server.mjs'), from: 'sibling/env', tried } - 执行外部命令来自配置/变量src/serving-client.mjs:48
this.child = spawn(process.execPath, [this.serverPath], { stdio: ['pipe', 'pipe', 'pipe'] }) - 发起网络请求src/serving-client.mjs:66
await this.request('initialize', { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'training-sft', version: '0.1.0' } }) - 发起网络请求src/serving-client.mjs:88
const res = await this.request('tools/call', { name, arguments: args }) - 写入本地文件src/data/pretrain-prepare.mjs:163
mkdirSync(out, { recursive: true, mode: 0o700 }) - 写入本地文件src/data/pretrain-prepare.mjs:164
writeFileSync(join(out, 'shards.json'), `${JSON.stringify({ schema: SHARD_STATE_SCHEMA, chunkChars, shardCount, corpusHash, heldoutHash, chunks: train - 写入本地文件src/data/pretrain-prepare.mjs:165
writeFileSync(join(out, 'lineage.json'), `${JSON.stringify(lg, null, 2)}\n`) - 写入本地文件src/data/pretrain-prepare.mjs:166
writeFileSync(join(out, 'exclusions.json'), `${JSON.stringify({ - 写入本地文件src/data/pretrain-prepare.mjs:176
writeFileSync(join(out, `shard-${String(s.index).padStart(3, '0')}.jsonl`), `${slice.map(toLine).join('\n')}\n`) - 写入本地文件src/data/pretrain-prepare.mjs:179
writeFileSync(join(out, 'domain-heldout.jsonl'), `${heldout.map(toLine).join('\n')}\n`) - 执行外部命令固定命令src/worker.mjs:70
this.child = spawn('docker', this.args(), { stdio: ['pipe', 'pipe', 'pipe'] }) - 读取本地文件src/data/corpus-audit.mjs:43
if (!existsSync(p)) return null - 读取本地文件src/data/corpus-audit.mjs:44
return readFileSync(p, 'utf8').split('\n').filter((l) => l.trim()).map((l) => JSON.parse(l)) - 读取本地文件src/data/corpus-audit.mjs:49
for (const d of (existsSync(datasetsRoot) ? readdirSync(datasetsRoot) : [])) { - 读取本地文件src/data/corpus-audit.mjs:49
for (const d of (existsSync(datasetsRoot) ? readdirSync(datasetsRoot) : [])) { - 读取本地文件src/data/corpus-audit.mjs:51
if (existsSync(p)) sets.push({ name: `wikitext-test(${d.includes('c512') ? 'c512' : 'c128'})`, kind: 'lm', file: p, rows: loadJsonl(p) ?? [], keyOf: ( - 读取本地文件src/data/corpus-audit.mjs:54
if (existsSync(mmlu)) sets.push({ name: 'mmlu-test', kind: 'qa', file: mmlu, rows: loadJsonl(mmlu) ?? [], keyOf: (r) => r.question })
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成@xiciyang/training-pretrain
继续预训练(CPT):把原始语料切成确定性分片,用真实 GPU 在基座模型上继续训练,并对「权重真的变了」「格式没有崩」两件事分别取证。
DSH(DeepSeek Harness)插件包,同时可作为普通 Node 库使用。
它解决的问题
继续预训练最容易出现的两种假成功:
1. 空操作——步数、loss 曲线都正常,权重其实没变。本包在训练前后取权重指纹,相同即判失败。
2. 格式崩溃——下游指令能力被打没,而困惑度看起来还降了。本包在验收阶段跑格式门禁,并把结果与训练前的基线对比。
安装
dsh plugin add github:xiciyang/training-pretrain
要求:
- Node.js >= 20,engines.dsh >= 0.2.0 < 0.3.0
- 真实训练需要 NVIDIA GPU + 容器运行时 + 训练镜像;不满足时 training_pretrain_health 会逐项说明
- Python 框架(torch / transformers / peft / trl / accelerate)在 optionalDependencies 中显式声明
工具面(DSH)
| 工具 | 作用 |
展开完整文档(README 剩余 1 节)
@xiciyang/training-pretrain
继续预训练(CPT):把原始语料切成确定性分片,用真实 GPU 在基座模型上继续训练,并对「权重真的变了」「格式没有崩」两件事分别取证。
DSH(DeepSeek Harness)插件包,同时可作为普通 Node 库使用。
它解决的问题
继续预训练最容易出现的两种假成功:
1. 空操作——步数、loss 曲线都正常,权重其实没变。本包在训练前后取权重指纹,相同即判失败。
2. 格式崩溃——下游指令能力被打没,而困惑度看起来还降了。本包在验收阶段跑格式门禁,并把结果与训练前的基线对比。
安装
dsh plugin add github:xiciyang/training-pretrain
要求:
- Node.js >= 20,engines.dsh >= 0.2.0 < 0.3.0
- 真实训练需要 NVIDIA GPU + 容器运行时 + 训练镜像;不满足时 training_pretrain_health 会逐项说明
- Python 框架(torch / transformers / peft / trl / accelerate)在 optionalDependencies 中显式声明
工具面(DSH)
| 工具 | 作用 |
| training_pretrain_prepare | 语料准备:分片、去重、领域留出、确定性切分、血缘与内容哈希 |
| training_pretrain_train | 训练:预算闸门、权重指纹(init/after 双指纹)、checkpoint 保留、审计链 |
| training_pretrain_validate | 验收:困惑度变化必须过有效性门禁;格式能力不得击穿底线 |
| training_pretrain_rollback | 回退到指定 run;purge 只允许删本插件 run 目录 |
| training_pretrain_get_report | 取人类可读报告 |
| training_pretrain_health | 环境自检:GPU / 容器 / 镜像 / 基座 / serving 依赖,逐项可用性 |
配置(不把本机布局写死)
| 环境变量 | 用途 |
| DSH_BASE_MODEL | 基座模型本地目录 |
| DSH_SHARD_PATH | 原始语料分片(.json.gz,每行 {id, source, text}) |
| DSH_MMLU_PATH | 评测数据路径(用于格式/能力门禁,可选) |
| TRAINING_PRETRAIN_ROOT | 运行目录根(默认 ~/.ai-infra) |
测试
node tests/run.mjs
纯逻辑与契约测试在任何机器上应为绿;依赖本机历史产物的判据自检在产物缺失时显式 SKIP 并写明原因(汇总行打印 skipped 数),不伪装成通过。
安全边界
- 训练与合并需显式确认令牌;预算超限直接拒绝
- 回退只作用于本插件自己的 run 目录,越界路径被拒
- 审计为追加式哈希链,可第三方复算
许可
BSD-3-Clause。见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xiciyang/training-pretrain
切分语料并在真实 GPU 上继续训练,验证权重与格式
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9