当前位置: 首页 > news >正文

MiniMind模型的web交互功能初试

MiniMind模型的web交互功能初试

一、前言

MiniMind提供了基于streamlit的web交互功能,能够即时切换模型和修改相关参数,经初步测试,具有比较好的体验感。本文介绍了使用MiniMind使用web交互功能的方法,并对使用中出现的问题给出了相应的解决方法。

二、测试模型准备

2.1、 模型下载

MiniMind已经训练好了多个模型,官网给出的模型下载地址为:

  • PyTorch原生模型
  • Transformers模型

可以从网站直接下载所需要的模型,也可以通过以下方式下载全部模型:

#SDK模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('gongjy/MiniMind2-PyTorch')
#Git模型下载
git clone https://www.modelscope.cn/gongjy/MiniMind2-PyTorch.git

从官网给的Transformers模型下载链接看,MiniMind2目前只有PyTorch原生模型可以下载。

2.2、模型转换

MiniMind项目提供了通过streamlit实现了基本的web交互功能,程序为scripts目录里的web_demo.py。运行环境需要有streamlit,可以按如下方法安装:

pip install streamlit

然后启动网页对话程序:

streamlit run web_demo.py

很不幸,笔者运行的时候出现了以下错误提示:

ValueError: Unrecognized model in …/MiniMind2. Should have a model_type key in its config.json, or contain one of the following strings in its name: albert, align, altclip, aria, aria_text, audio-spectrogram-transformer, autoformer, aya_vision, bamba, bark, bart, beit, bert, bert-generation, big_bird, bigbird_pegasus, biogpt, bit, blenderbot, blenderbot-small, blip, blip-2, bloom, bridgetower, bros, camembert, canine, chameleon, chinese_clip, chinese_clip_vision_model, clap, clip, …

经检查程序,发现默认加载Transformers模型,直接把PyTorch模型放在模型路径下是不行的。因此需要使用scripts目录下的conver_model.py将PyTorch模型转换为Transformers模型。模型转换的相关参数按下表确定。

Model Nameparamslen_vocabn_layersd_model
MiniMind2-Small26M64008512
MiniMind2-MoE145M64008640
MiniMind2104M640016768
minimind-v1-small26M64008512
minimind-v1-moe4×26M64008512
minimind-v1108M640016768

如对于MiniMind2-Small模型,参数和路径设置如下:

    lm_config = LMConfig(dim=512, n_layers=8, max_seq_len=8192, use_moe=False)torch_path = f"../out/rlhf_{lm_config.dim}{'_moe' if lm_config.use_moe else ''}.pth"transformers_path = '../MiniMind2-Small'

转换后,会在模型路径下生成以下文件,用于Transformers加载:
modelfiles

三、PyTorch原生模型的加载方式

除了上述PyTorch模型转换为Transformers模型的方法外,还可以直接修改web_demo.py直接加载PyTorch模型。
主要修改如下:

#...
MODEL_PATHS = {"MiniMind2-MoE (0.15B)": ["../MiniMind2-PyTorch", "MiniMind2-MoE"],
}
#...
def main():#model, tokenizer = load_model_tokenizer(model_path) # 注释掉此行model_file = f'{MODEL_PATHS[selected_model][0]}/full_sft_640_moe.pth'model = MiniMindLM(LMConfig(dim=640,n_layers=8,max_seq_len=6400,use_moe=True))state_dict = torch.load(ckp, map_location=device)model.load_state_dict({k: v for k, v in state_dict.items() if 'mask' not in k}, strict=True)model.eval().to(device)tokenizer = AutoTokenizer.from_pretrained('./model/minimind_tokenizer')

这样web_demo.py程序就可以正确加载PyTorch模型。

四、web交互测试

MiniMind2-MoE模型测试:
start
模型切换和参数设置:
second

推理模型MiniMind2-R1测试:
reasonmodel

http://www.xdnf.cn/news/137575.html

相关文章:

  • 28、.NET 中元数据是什么?
  • LeNet5 神经网络的参数解析和图片尺寸解析
  • 《R语言SCI期刊论文绘图专题计划》大纲
  • ​​激光雷达(LiDAR)数据​​ 的标准存储格式.las文件介绍
  • C++ (STL,顺序容器,关联容器,容器适配器)
  • 如何使用SeedProd创建无缝的WordPress维护页面
  • 【刷题Day26】Linux命令、分段分页和中断(浅)
  • AD相同网络的铜皮和导线连接不上
  • 5.2 AutoGen:支持多Agent对话的开源框架,适合自动化任务
  • 深入解析 Linux 中动静态库的加载机制:从原理到实践
  • 文件的读取操作
  • Unity3D IK解算器技术分析
  • 安卓手机下载谷歌浏览器遇到兼容问题怎么办【三步解决】
  • Move Registry 发布,实现 Sui 的超级互操作性
  • 大模型微调 - transformer架构
  • flume整合Kafka和spark-streaming核心编程
  • 什么是可重入锁ReentrantLock?
  • 使用el-table表格动态渲染表头数据之后,导致设置fixed的列渲染出现问题
  • 如何在IDEA中高效使用Test注解进行单元测试?
  • Linux 怎么找Java程序的监听的端口
  • 企业级AI开发利器:Spring AI框架深度解析与实战
  • 解释器体系结构风格-笔记
  • Vuex 和 Pinia 的区别
  • 第2讲:R语言中的色彩美学——科研图表配色指南
  • 用C语言实现——一个中缀表达式的计算器。支持用户输入和动画演示过程。
  • C语言指针5
  • Swift中Class和Struct的深度对比分析
  • VS Code搭建C/C++开发环境
  • CAD版本之——DwgVersion 与 AutoCAD 版本的对应关系
  • UOJ 228 基础数据结构练习题 Solution