Uni-Mol Tools 分子性质预测实战演示指南:5 类任务训练与六大模型管理特性全测
2026/9/11 14:02:23 网站建设 项目流程

Uni-Mol Tools 分子性质预测实战演示指南:5 类任务训练与六大模型管理特性全测

【免费下载链接】CLI-Anything"CLI-Anything: Making ALL Software Agent-Native" -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything

导读:本文围绕 CLI-Anything 仓库中 README_DEMO.md 所定义的一体化演示流程展开,讲解如何用真实分子示例数据一口气训练 5 种任务类型的 9 个模型,并在二分类项目(Task 1)上完整验证存储分析、模型排名、最优模型、性能历史、清理建议、模型对比 6 大管理特性。读完本文,你将掌握demo_real_examples.sh的四种启动方式、脚本的完整执行链路、每个特性的底层打分/清理算法,以及脱离脚本手动复测任一项目文件的具体 CLI 命令。

一、演示总览:为什么这是官方推荐的一体化 Demo

该演示脚本(demo_real_examples.sh)的核心目标有两个:

  1. Part 1:使用examples/目录下的真实示例数据训练 5 种不同类型的分子性质预测任务;
  2. Part 2:挑选模型最多的Task 1(二分类,5 个模型),逐一测试全部 6 项模型管理新特性,并额外生成测试集预测结果。

与仓库内其他演示(demo_5_tasks.shdemo_complete.sh)相比,本脚本之所以被标注为Recommended(推荐),是因为它直接使用随工具提供的真实示例数据,无需生成数据、数据质量达到生产级,且覆盖全部 5 种任务类型与全部 6 项特性,一次运行即可完成端到端验证:

维度demo_real_examples.sh(本文主角)demo_5_tasks.shdemo_complete.sh
数据来源✅ 真实 examples 数据由真实数据派生小型合成数据
任务数量554
各任务模型数5, 1, 1, 1, 15, 1, 1, 1, 15, 1, 1, 1
测试的特性全部 6 项全部 6 项全部 6 项
数据质量✅ 生产级真实派生仅测试用
推荐度推荐可用快速测试

二、快速开始:四种启动方式与参数说明

脚本支持灵活的参数传入,核心用法如下:

# Option 1:同时指定 examples 目录与权重目录 bash demo_real_examples.sh /path/to/examples /path/to/weights # Option 2:只指定 examples 目录(找不到权重时自动下载) bash demo_real_examples.sh /path/to/examples # Option 3:使用相对路径(examples 位于父目录、权重位于 ../Uni-Mol 时) bash demo_real_examples.sh ../examples ../Uni-Mol/unimol_tools/weights # Option 4:自动探测(../examples 存在时直接运行) bash demo_real_examples.sh

参数约定

  • EXAMPLES_DIR(可选):examples 目录路径;不传时脚本自动尝试../examples,若仍不存在则打印用法帮助并退出(对应脚本 demo_real_examples.sh 的逻辑);
  • WEIGHTS_DIR(可选):权重目录路径。脚本的查找顺序为:命令行第 2 个参数 → 环境变量UNIMOL_WEIGHT_DIR→ 常见位置(../Uni-Mol/unimol_tools/unimol_tools/weights等)自动探测 → 全部失败时提示“Weights will be downloaded”(见脚本 demo_real_examples.sh)。

更多传参示例:

# 绝对路径 bash demo_real_examples.sh /home/user/unimol_tools/examples # 相对路径 bash demo_real_examples.sh ../../unimol_tools/examples # 环境变量 EXAMPLES=/opt/data/examples bash demo_real_examples.sh $EXAMPLES

权重目录同样可以通过 CLI 的--weight-dir/-w参数或UNIMOL_WEIGHT_DIR环境变量指定,对应入口实现在 unimol_tools_cli.py。

三、Part 1:5 类真实任务训练全流程

脚本采用“创建项目 → 绑定数据集 → 启动训练”三步范式,对每个任务重复执行。以下为脚本实际使用的完整命令序列(5 个任务模式相同,仅任务类型与数据路径不同)。

3.1 训练任务一览

任务类型数据来源训练模型数
Task 1二分类(Binary Classification)examples/binary_classification/(mol_train.csv / mol_test.csv)5
Task 2回归(Regression)examples/regression/(train.csv / test.csv)1
Task 3多分类(Multiclass,3 类)examples/multiclass/(train.csv / test.csv)1
Task 4多标签分类(Multilabel,3 标签)examples/multilabel_classification/(train.csv / test.csv)1
Task 5多标签回归(Multilabel Regression,3 目标)examples/multilabel_regression/(train.csv / test.csv)1

合计:5 个任务共训练9 个模型(5+1+1+1+1)。

3.2 单任务三步命令详解(以 Task 1 为例)

# ① 创建二分类项目 python -m cli_anything.unimol_tools \ project new \ --name "task1_binary" \ --task classification \ --output-dir "$PROJECT_DIR" # ② 绑定训练集 CSV python -m cli_anything.unimol_tools \ -p "$PROJECT_DIR/task1_binary/project.json" \ project set-dataset train "$EXAMPLES_DIR/binary_classification/mol_train.csv" # ③ 启动训练(10 epoch、batch size 16) python -m cli_anything.unimol_tools \ -p "$PROJECT_DIR/task1_binary/project.json" \ train start \ --epochs 10 \ --batch-size 16

底层实现说明

  • project new会为每个项目创建独立目录并写入project.json,目录结构为output_dir/name/{project.json, experiments/, conformers/, predictions/}(见 project.py);
  • 项目配置按任务类型自动选择默认指标:二分类/多标签分类默认auc,多分类默认acc,回归/多标签回归默认mae(project.py);
  • 默认训练配置为 epochs=10、batch_size=16、learning_rate=1e-4、early_stopping=20、80/20 随机划分;
  • train start通过--epochs--batch-size--lr--gpus覆盖项目配置后调用run_training,并将新增 run 写回project.json(unimol_tools_cli.py)。

3.3 数据格式要求

所有训练数据均为 CSV,必须包含:

  • SMILES:分子结构;
  • 目标列:各任务类型取值不同——二分类为 0/1 或 True/False,回归为浮点数,多分类为整数(0,1,2,...),多标签分类为多个 0/1 列,多标签回归为多个浮点数列。
SMILES,target CCO,1 CCCO,0 CC(C)O,1

四、Part 2:六大模型管理特性逐一测试

Task 1 之所以被选中用于特性测试,官方文档给出四条理由:5 个已训练模型最适合演示模型管理、真实分子数据贴近实际药物发现场景、二分类指标清晰(AUC、accuracy)、自带测试集可演示预测。

脚本在执行完 Task 1 首次训练后,会循环追加训练 4 个模型for i in {2..5},epochs=8、batch-size=16,输出重定向到/dev/null),使 Task 1 达到 5 个模型,随后依次触发 6 项测试。

特性 1:存储分析(Storage Analysis)

python -m cli_anything.unimol_tools -p "$PROJECT_JSON" storage

输出会按models / conformers / predictions三类组件统计磁盘占用、百分比,并绘制 ASCII 进度条;当存在超过 7 天的旧模型或 AUC<0.75 的低分模型时,额外给出可释放空间的清理建议(对应实现见 storage.py)。典型输出:

Total: 152.3 MB ├── Models: 145.8 MB (95.7%) ├── Conformers: 5.2 MB (3.4%) └── Predictions: 1.3 MB (0.9%)

特性 2:模型排名(Models Ranking)

python -m cli_anything.unimol_tools -p "$PROJECT_JSON" models rank

排名依据calculate_model_score计算的0~10 综合得分:默认权重下 AUC 占比 100%(weight_auc=1.0,另有训练时长、时间新鲜度权重可调),AUC 直接乘 10 归一化(models_manager.py)。状态按 AUC 阈值分级:≥0.85 为 Best/Good≥0.75 为 Ok≥0.65 为 Weak、否则为Poor(models_manager.py)。前 3 名分别以 🥇🥈🥉 高亮展示:

Rank Run ID AUC Score Status 1 run_003 0.92 9.2 Best 2 run_002 0.85 8.5 Good 3 run_001 0.78 7.8 Ok 4 run_005 0.72 7.2 Weak 5 run_004 0.68 6.8 Poor

特性 3:最优模型(Best Model)

python -m cli_anything.unimol_tools -p "$PROJECT_JSON" models best

底层get_best_model优先按指定指标(默认 auc)取最大值,若所有 run 均无该指标则回退到第一个 run(models_manager.py):

Best Model: run_003 AUC: 0.92 Score: 9.2

特性 4:性能历史(Model History)

python -m cli_anything.unimol_tools -p "$PROJECT_JSON" models history

get_model_history按时间戳排序生成时间线,比较首尾 AUC 差值(阈值 ±0.05)判定趋势为improving / declining / stable,并输出最优模型、上升趋势、近期回落三类洞察;CLI 端还会按 AUC 值绘制字符柱状图(models_manager.py):

Trend: Improving (+0.24 AUC) Best: run_003 (AUC: 0.92)

特性 5:清理建议(Cleanup Suggestions)

python -m cli_anything.unimol_tools -p "$PROJECT_JSON" cleanup

cleanup支持--keep-best(默认保留前 3 名)、--min-auc(默认 0.75)、--auto(自动执行删除)三个选项。决策逻辑(models_manager.py)为:Top N 永远保留7 天内的近期模型保留AUC 低于阈值且较旧的删除其余中等表现旧模型归档

DELETE: 2 models (58.2 MB savings) KEEP: 3 models (top performers + recent)

删除/归档由 cleanup.py 落地:删除即移除experiments/下对应 run 目录并更新project.json;归档则打包为~/.unimol-archive/{project}_{run_id}_{日期}.tar.gz,支持archive list/archive restore还原。

特性 6:模型对比(Model Comparison)

python -m cli_anything.unimol_tools -p "$PROJECT_JSON" models compare run_001 run_002

compare_models对两模型逐指标比较(auc、accuracy、precision、recall、f1_score、mcc、log_loss 及训练时长),除 log_loss 与训练时长为“越小越好”外其余均为“越大越好”,最终按“胜出指标数”决出 overall winner(models_manager.py):

Comparing: run_001 vs run_003 Winner: run_003 (4/4 metrics)

彩蛋:最优模型预测

6 项测试结束后,脚本通过models best --json解析出最优 run_id,再用它对测试集做预测并写入predictions.csv

python -m cli_anything.unimol_tools \ -p "$PROJECT_JSON" \ predict run "$BEST_RUN" "$EXAMPLES_DIR/binary_classification/mol_test.csv" \ --output "$PROJECT_DIR/predictions.csv"

五、手动复测与 JSON 输出

演示完成后,任何任务项目都可以脱离脚本手动验证特性(-p指向各任务project.json即可):

# Task 1(二分类,5 个模型)— 全特性 python -m cli_anything.unimol_tools -p demo_projects/task1_binary/project.json storage python -m cli_anything.unimol_tools -p demo_projects/task1_binary/project.json models rank python -m cli_anything.unimol_tools -p demo_projects/task1_binary/project.json models best python -m cli_anything.unimol_tools -p demo_projects/task1_binary/project.json models history python -m cli_anything.unimol_tools -p demo_projects/task1_binary/project.json cleanup python -m cli_anything.unimol_tools -p demo_projects/task1_binary/project.json models compare run_001 run_002 # Task 2(回归) python -m cli_anything.unimol_tools -p demo_projects/task2_regression/project.json storage python -m cli_anything.unimol_tools -p demo_projects/task2_regression/project.json models best # Task 3~5 存储分析 python -m cli_anything.unimol_tools -p demo_projects/task3_multiclass/project.json storage python -m cli_anything.unimol_tools -p demo_projects/task4_multilabel_cls/project.json storage python -m cli_anything.unimol_tools -p demo_projects/task5_multilabel_reg/project.json storage # JSON 结构化输出(便于 Agent / 脚本消费) python -m cli_anything.unimol_tools -p demo_projects/task1_binary/project.json storage --json

注意:JSON 模式的--json为全局选项,需置于子命令之前,例如python -m cli_anything.unimol_tools --json -p ... storage(脚本结尾的 Next Steps 亦有此提示)。该模式由统一输出函数output()集中处理,错误时同样输出 JSON 错误对象(unimol_tools_cli.py),非常适合接入 AI Agent 做自动化流程。

若只想复测特性、跳过训练环节,可改用 test_features.sh,直接对既有project.json依次执行上述 6 项测试。

六、输出目录结构与成功标准

运行结束后生成demo_projects/目录:

demo_projects/ ├── task1_binary.json # 5 个模型 ← 被选中做特性测试 ├── task2_regression.json # 1 个模型 ├── task3_multiclass.json # 1 个模型 ├── task4_multilabel_cls.json # 1 个模型 ├── task5_multilabel_reg.json # 1 个模型 └── predictions.csv # 测试集预测结果

验证成功的 10 项标准:

  • ✅ 创建 5 个 project.json 文件
  • ✅ 训练 9 个模型(5 + 1 + 1 + 1 + 1)
  • ✅ 在 Task 1 上测试全部 6 项特性
  • ✅ 生成测试集预测结果
  • ✅ 展示存储占用分解
  • ✅ 展示带得分的模型排名
  • ✅ 识别出最优模型
  • ✅ 展示性能趋势
  • ✅ 提供清理建议
  • ✅ 展示模型对比结果

七、执行时间预估与注意事项

环境总耗时明细
GPU约 8~12 分钟Task 1 约 6 分钟(5 个模型);Task 2~5 各 1~2 分钟
CPU约 40~60 分钟Task 1 约 30 分钟(5 个模型);Task 2~5 各约 10 分钟

脚本的彩色输出约定:蓝色= 信息消息、绿色= 成功消息、黄色= 段落标题(对应脚本 demo_real_examples.sh 定义的info/success/section函数)。运行前会清理旧的demo_projects/目录;若显式传入的 examples 目录不存在,脚本会以红色错误信息退出。

八、配套资源与延伸阅读

  • 演示脚本本体:demo_real_examples.sh、仅测特性脚本:test_features.sh
  • CLI 入口与全部命令定义:unimol_tools_cli.py
  • 核心模块源码:项目管理 project.py、模型管理 models_manager.py、存储分析 storage.py、清理归档 cleanup.py
  • 单元测试:模型管理测试 test_models_manager.py 覆盖得分计算、排名、最优、对比、历史、删除建议全链路
  • 项目级文档:agent-harness 说明、安装指南、快速上手、API 参考

延伸提示:真实示例数据位于examples/(各任务train.csv/test.csv),本仓库的demo_real_examples.sh默认从../examples或命令行参数读取。若本地已有该数据目录,bash demo_real_examples.sh <examples路径>即可一条命令跑完全部演示;训练完成后,还可基于 docs/guides 与 docs/tutorials 进一步深入分类、回归等专项教程。

【免费下载链接】CLI-Anything"CLI-Anything: Making ALL Software Agent-Native" -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询