发布时间:2026/6/26 8:00:05
Hugging Face
Hugging Face的model hubHugging Face的model hub是一个汇聚了海量预训练机器学习模型的中央仓库可以把它理解为一个AI模型的“应用商店”一、Automodel加载模型下面是一个模型的代码结构实例以它为例我们来说明如何从Hugging Face配置预训练好的大模型上面是MiniCPM-Llama3-V-2_5 / config.json这里有两个特别说明1.architectures: [MiniCPMV]architectures一个身份标签是一个类名列表通常只有一项定义了模型的架构名称作用这是一个声明告诉使用者或HF框架“我这个模型在逻辑上属于MiniCPMV这个类型。”局限性它只提供了名字。如果HF官方库内置了这个名字比如LlamaForCausalLM框架就能自动找到代码。但如果这个名字是自定义的如这里的MiniCPMVHF的官方库根本不知道这个类长什么样光看名字会报错。2. auto_map: {AutoConfig: configuration_minicpm.MiniCPMVConfig,AutoModel: modeling_minicpmv.MiniCPMV,AutoModelForCausalLM: modeling_minicpmv.MiniCPMV}auto_map具体地址/地图是一个映射字典告诉 HF 框架“如果你要加载我这个模型请去指定的 Python 文件里寻找对应的类。”AutoConfig指向配置文件configuration_minicpm.py中的配置类。AutoModel和AutoModelForCausalLM指向模型主文件modeling_minicpmv.py中的模型类。举个例子用下面的代码加载这个模型from transformers import AutoModel # 你只给了模型文件夹路径 model AutoModel.from_pretrained(./my_minicpm_folder)此时程序内部发生了什么呢我们按步骤拆解第 1 步读取config.json程序打开文件夹读取了这个配置文件。第 2 步查询auto_map优先执行程序发现配置里有auto_map字段并且包含了AutoModel: modeling_minicpmv.MiniCPMV。路径解析modeling_minicpmv.MiniCPMV表示“去当前文件夹下的modeling_minicpmv.py这个文件中找到名为MiniCPMV的类”。实际执行HF 框架会动态导入这个 Python 文件并提取出MiniCPMV类。第 3 步实例化这个类程序使用提取出来的MiniCPMV类加上其他参数hidden_size4096等创建出你的模型对象。如果去掉auto_map会发生什么对比说明如果把这个auto_map删掉只保留architectures: [MiniCPMV]那么当你运行上述加载代码时HF 框架会去它的官方内置模型库transformers库安装目录下的models文件夹找名为MiniCPMV的类。因为MiniCPMV不在官方库里程序会直接抛出错误二、官方定义好的类(LlamaForCausalLM)加载模型内部流程比如说我们通过transformers.LlamaForCausalLM.from_pretrained...来创建模型流程 1LlamaForCausalLM.from_pretrained(./my_model)硬编码路径程序执行非常线性直接定位类Python 直接导入transformers库中的LlamaForCausalLM类。读取配置仅作为参数进入该类的from_pretrained方法读取config.json文件。请注意此时读配置是为了获取hidden_size、num_layers等初始化参数而不是为了“找类”因为类已经确定了。加载权重根据config.json里的torch_dtype和结构去文件夹里找.safetensors或.bin权重文件映射到当前的LlamaForCausalLM对象上。返回模型。三、自己定义的类加载模型内部流程#自己定义的类LlavaLlamaAttForCausalLM #这里LlamaForCausalLM是transformers库定义好的UniNaVIDMetaForCausalLM是我们自己定义的 class LlavaLlamaAttForCausalLM(LlamaForCausalLM, UniNaVIDMetaForCausalLM): config_class LlavaConfig def __init__(self, config): super(LlamaForCausalLM, self).__init__(config) self.model LlavaAttLlamaModel(config) self.lm_head nn.Linear(config.hidden_size, config.vocab_size, biasFalse) self.post_init() #LlavaLlamaAttForCausalLM调用from_pretrained model LlavaLlamaAttForCausalLM.from_pretrained( model_args.model_name_or_path, configconfig, cache_dirtraining_args.cache_dir, **bnb_model_from_pretrained_args) 最终的model就是一个LlavaLlamaAttForCausalLM实例化对象LlavaLlamaAttForCausalLM自己没有写from_pretrained但它继承了LlavaLlamaAttForCausalLM- LlamaForCausalLM - LlamaPreTrainedModel - PreTrainedModel而from_pretrained定义在 Transformers 的PreTrainedModel里所以子类可以直接调用。PreTrainedModel的from_pretrained函数中会执行 model cls(config, ...)这里的cls很重要。这里调用的是LlavaLlamaAttForCausalLM.from_pretrained(...)所以 cls 就是 LlavaLlamaAttForCausalLM最终会调用它自己的 __init__self.model LlavaAttLlamaModel(config)self.lm_head nn.Linear(...)我们通过LlavaLlamaAttForCausalLM.from_pretrained创建的model和LlamaForCausalLM.from_pretrained创建的的model主要差异体现在顶层模型类变了顶层模型训练和推理时你直接调用的完整模型外壳。比如普通 LLaMA 里有两层概念LlamaForCausalLM # 顶层模型└── self.model LlamaModel # 底层 Transformer 主干└── self.lm_head # 输出头把 hidden state 变成词表 logitsLlamaModel主要负责 Transformer 主干计算embedding、decoder layers、attention、MLP、norm最后输出 hidden states。LlamaForCausalLM在它外面加了“做语言模型任务需要的东西”主要包括#1.持有底层主干 self.model LlamaModel(config) #2.加一个语言建模头 lm_head 它把每个 token 位置的隐藏向量变成词表预测分数 self.lm_head nn.Linear(config.hidden_size, config.vocab_size, biasFalse) #3.实现 forward 的完整任务逻辑 outputs self.model(...) hidden_states outputs[0] logits self.lm_head(hidden_states) if labels is not None: loss CrossEntropyLoss(...) #4.适配生成 generate LlamaForCausalLM 继承了 GenerationMixin所以可以调用 model.generate(...)

相关新闻

开源 ROM 的可持续发展:GrapheneOS 项目如何保持与 AOSP 主线的同步节奏?
2026/6/26 8:00:05

开源 ROM 的可持续发展:GrapheneOS 项目如何保持与 AOSP 主线的同步节奏?

前言:当 Android 开源生态遭遇“断供”危机 2026 年 1 月,一则消息在 Android 开源社区掀起了巨浪。Google 宣布,自 2026 年起,Android 开源项目(AOSP)的源代码发布频率将从每季度一次缩减为每年仅两次——…

阅读更多
鼎亚科技信创AI智慧门户One重磅发布
2026/6/26 8:00:05

鼎亚科技信创AI智慧门户One重磅发布

打破企业数据孤岛,AI赋能大型企业全数据链路治理——鼎亚科技信创AI智慧门户One重磅发布60%以上功能永久免费下载链接: https://pan.baidu.com/s/1wFoigSJPJNNK7DhtZMi_9A 提取码: oneP

阅读更多
预算有限者参考:成都法拍资产怎么买最划算的实操路径
2026/6/26 7:00:05

预算有限者参考:成都法拍资产怎么买最划算的实操路径

厘清核心概念:成都法拍资产包含哪些类型在探讨成都法拍资产怎么买最划算之前,首先需要明确“法拍资产”的定义范围。在成都市场,这类资产不仅限于普通住宅,还包括公寓、底商、写字楼以及企业大宗闲置资产。不同属性的资产&#xf…

阅读更多
血泪教训!2026传智教育博学谷AI大模型培训实录:不仅是割韭菜,更是PUA你的未来!
2026/6/26 9:00:05

血泪教训!2026传智教育博学谷AI大模型培训实录:不仅是割韭菜,更是PUA你的未来!

大家好,我是你们的技术同行者。2026年6月,AI大模型已经不再是新鲜词,而是无数求职者眼中的“救命稻草”。然而,当技术的红利到来时,最先闻到血腥味的往往不是鲨鱼,而是拿着镰刀的商人。最近,我亲…

阅读更多
3分钟搞定百度网盘提取码:智能查询工具完整使用指南
2026/6/26 9:00:05

3分钟搞定百度网盘提取码:智能查询工具完整使用指南

3分钟搞定百度网盘提取码:智能查询工具完整使用指南 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而烦恼吗&#xff1…

阅读更多
学之思开源考试系统:从技术选型到生产部署的完整指南
2026/6/26 9:00:05

学之思开源考试系统:从技术选型到生产部署的完整指南

学之思开源考试系统:从技术选型到生产部署的完整指南 【免费下载链接】xzs-mysql 学之思开源考试系统是一款 java vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序,能覆盖到pc机和手机等…

阅读更多
从信息收集到权限提升:Lampiao靶机渗透实战全解析
2026/6/26 9:00:05

从信息收集到权限提升:Lampiao靶机渗透实战全解析

1. 项目概述:一次对Lampiao靶机的完整渗透剖析最近在整理渗透测试的学习笔记,翻到了几年前做过的Lampiao靶机。这个靶机在VulnHub上挺有名的,是一个基于Ubuntu的Linux服务器,模拟了一个存在多个漏洞的Web应用环境。它之所以经典&a…

阅读更多
百度网盘解析工具完整教程:免费获取高速下载链接的终极指南
2026/6/26 9:00:05

百度网盘解析工具完整教程:免费获取高速下载链接的终极指南

百度网盘解析工具完整教程:免费获取高速下载链接的终极指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的速度限制而烦恼吗?想要摆脱…

阅读更多
Neuron | 北大李程团队绘制衰老小胶质细胞单细胞蛋白组图谱
2026/6/26 8:00:05

Neuron | 北大李程团队绘制衰老小胶质细胞单细胞蛋白组图谱

本账号(精准医学与蛋白组学)关注国内外蛋白组学、蛋白修饰组学应用领域的科研进展,普及蛋白组学在生命科学及基础医学研究中的应用,一起交流学习。如有侵权请联系后台删除。小胶质细胞是中枢神经系统的常驻免疫细胞,在…

阅读更多
嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南
2026/6/25 12:25:54

嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南

1. 项目概述与G.726 ADPCM技术背景在嵌入式语音处理领域,带宽和存储资源往往是寸土寸金的。如果你做过对讲机、VoIP网关或者早期的数字录音设备,一定对如何在有限的比特率下保住语音可懂度这件事深有感触。我当年接手一个车载调度系统的项目,…

阅读更多
ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性
2026/6/25 22:07:52

ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性

1. 项目概述与核心挑战在数字视频处理领域,将原始的视频数据、同步时序以及各种辅助信息打包成一个标准、稳定的串行数据流,是确保设备间互联互通的基础。ITU-R BT.656标准(常简称为ITU656)正是为此而生的一套“交通规则”。它定义…

阅读更多
嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南
2026/6/25 20:03:50

嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南

1. 项目概述与emWin核心价值解析在嵌入式系统开发领域,人机交互(HMI)的设计正从简单的LED指示灯和按键,快速向全彩图形化界面演进。无论是智能家电上的触摸屏、工业PLC的操作面板,还是医疗设备的参数显示,一…

阅读更多
计算机毕业设计之基于Java的流浪动物收养系统设计与开发
2026/6/26 0:00:04

计算机毕业设计之基于Java的流浪动物收养系统设计与开发

时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,流浪动物收养系统当然不能排除在外。流浪动物收养系统是在实际应用和软件工程的开发原理之上,运用java语言以及SSM框架进行开发。首先…

阅读更多
技术线上面试代码写完就以为通关?留学生利用黑盒测试自证风控「蒸汽教育分享」
2026/6/26 0:00:04

技术线上面试代码写完就以为通关?留学生利用黑盒测试自证风控「蒸汽教育分享」

在线上白板编程(Coding)或算法实战轮次中,不少代码基本功扎实的技术新人,在跑通了题目主干逻辑的第一时间,会习惯性地向评委表示“我写完了”。这在极其注重系统稳定性的研发总监和资深架构师眼里,往往暴露…

阅读更多
暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程
2026/6/26 0:00:04

暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程

暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否厌倦了在暗黑破坏神2中反复刷装备的枯燥过程?是否想快速测试不同的职业build却不想花…

阅读更多
GIT修改用户名
2026/6/26 3:53:45

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/23 23:39:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/24 18:38:44

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多