VisualTorch 是一个图形化 AI 模型设计引擎原型,目标是让用户像使用 Scratch 或 LabVIEW 一样,通过模块和连接搭建神经网络、数据处理流程、训练配置与输出逻辑,并将图形化设计翻译为 PyTorch 代码。
当前阶段以网页作为第一个前端目标,已经支持 MLP、CNN、RNN 的基础模块化搭建、tensor shape 推导和 PyTorch 代码预览。
VisualTorch 至少包含三个层级:
- 前端:提供图形化编辑器、模块配置、图校验、shape 展示、代码预览与导出。
- 后端:跨平台管理项目、模块图、节点参数、连接关系、shape 推导和版本数据。
- 翻译器:将模块图翻译为 PyTorch 代码。
后端和翻译器应保持平台无关,未来可服务网页、桌面 App、Unity/UE 插件等不同前端。
- 基于网页的图形化原型编辑器。
- 模块库按 Data、Layers、Operations、Losses、Optimizers、Training、Outputs 分类折叠展示。
- 支持中文和英文界面,并会记住用户选择。
- 可从模块库添加模块,并在画布中删除模块。
- 可拖动节点位置,点击输出/输入端口创建连接。
- 可删除节点或连线,相关状态会自动更新。
- 可拖动侧栏和代码预览分隔条调整工作区大���。
- 支持 MLP、CNN、RNN 示例图。
- 支持 Conv2d、MaxPool2d、AvgPool2d、BatchNorm2d、Embedding、SimpleRNN、GRU、LSTM、LastTimeStep 等模块。
- 每个节点会记录并展示输入/输出 tensor shape。
- 当 Linear、Conv2d、Pool、RNN 等模块的输入 shape 或输出 shape 不合法时,会在节点和校验面板报错。
- PyTorch 翻译器按 DAG 拓扑顺序生成
forward,不再局限于nn.Sequential。
apps/
web/
index.html
styles.css
src/
app.js
packages/
core/
src/
exampleMlp.js
exampleModels.js
exampleResidual.js
graphBackend.js
moduleRegistry.js
pytorchTranslator.js
shapeInference.js
agent.md
PLAN.md
当前原型不依赖 npm 包,可以通过本地 HTTP 服务访问。请在仓库根目录运行:
python -m http.server 5173然后打开:
http://localhost:5173/apps/web/
错误 CNN 示例中,输入图像 shape 为 [16, 1, 5, 5],卷积层参数为 kernelSize=7, padding=0, stride=1。根据卷积输出公式,输出高宽会变成 -1,因此系统会报错:
bad_conv: Conv2d output shape is invalid: height=-1, width=-1.
Check kernelSize, stride, padding and dilation.
此时 PyTorch 代码预览会停止导出,并提示需要修正图。
- 前端只负责交互和展示,不直接拼接训练代码。
- 后端保存标准化、可序列化的图数据。
- shape 推导属于核心层能力,所有前端共享。
- 翻译器只依赖标准图数据,不依赖某个具体前端。
- 模块定义集中维护,所有平台共享同一套模块语义。
- 生成代码应可读、稳定、便于用户继续手写修改。