# openmind_design **Repository Path**: ginray0215/openmind_design ## Basic Information - **Project Name**: openmind_design - **Description**: openmind_design - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-09-18 - **Last Updated**: 2024-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目定位(1030版本) 1. 承担魔乐社区和infra支持下的,全尺寸全类型模型的下载和推理,对标modelscope,为openmind社区生态的窗口项目 2. 结合当前热点,对LLM,MM相关任务做了重点优化,支持训练、评测、部署流水线, 对标swift-ms 和 llama-factory 3. 数据工程等围绕LLM训练衍生出的相关功能 4. 给用户提供高层次的封装接口,但是底层同时支持pytorch 和mindspore两套框架和对应的各种组件,但用户不感知细节 - 项目帮助中小开发者迅速做业务验证,完成项目中前期开发工作 - 更专业的部署和大规模训练,本项目不涉及 # 当前版本的问题 功能缺失 1. 大模型的推理缺乏template,依赖pipeline,进而就难以训练 2. 关键训练任务的数据缺少统一管理,需要用户手动构造 扩展和维护困难 1. 新任务不容易扩展(受制于现有设计和强依赖transformers和mindformers, 无法横向添加diffuser等) 2. 当前openmind能够完整地支持哪些任务和模型,无法清晰的感知和集中管理 3. mindspeed等组件使用割裂,未深度集成 4. models目录下的种子模型可能会导致一些代码逻辑的不一致性 5. Pt和Ms框架的不一致性缺乏统一管理和抽象封装 6. mindspore或者pytorch的特殊操作需要用户自行处理,理论需要封装 # 新版本设计要求 1. 管理清晰 对openmind能支持的范围有清晰准确的把控,从项目配置可以推导出完整的支持列表和依赖关系 2. 可扩展性 容易引入新任务和依赖,不影响原有模块功能,通过插件式可插拔的设计,降低发新版的回归测试工作量 3. 兼容性 与历史版本接口兼容,Pt和Ms框架兼容和隔离 4. 可运维 因为做了很多集成,依赖管理多,需要构建错误日志定位体系,迅速找到错误点 5. 流水线齐全 包含完整的推理,训练,评测,部署流程,通过cli和统一的参数可以统一调用 # 核心思想 所有模块注册制加入,构建关联关系 - 注册task (顶层概念,比如nlp下的chat, mm下的text2image) - 注册pipeline wrapper (与task 1对1, task的推理抽象承载层) - 注册pipeline (与 wrapper 1对2(ms和pt),包含了task在不同框架下具体的preprocess,forward,postprocess) - 注册trainer wrapper(与task 1对1, task的训练抽象承载层) - 注册trainer (与 wrapper 1对2,包含了task在不同框架下具体的训练策略) - 注册model group (与 task N对M,比如llama group 和chatglm group 都对应 CHAT, 同时也可以对应 TEXT_2_EMB 任务, 定义了模型的一些meta信息) - 注册template (与 model group 1对1,包含了模型的的多模态prompt处理) - 注册dataset (与task 1对1,针对LLM,MM等任务训练所需要的标准格式的数据处理) 后续暴露的sdk和cli,是在 pipeline wrapper 层级上 # 20240918 版本进展 完成了task, pipeline wrapper,pipeline, model group, template 部分的概要设计 模型加载流程 ![# init_and_load](assets/init_and_load.PNG) pipeline推理流程 ![# pipeline](assets/pipeline.PNG)