xxxPipeline.from_pretrained(model_path)加载自定义路径下的模型结构

问题:

许多模型(特别是huggingface上的模型),在进行推理时都会使用xxxPipeline.from_pretrained(model_path)来加载推理流程,在该过程中,会自动实现各个子模块的初始化以及权重的加载。

而且许多子模块都来自于各种python库,例如transformers或者diffusers,当我们在本地重写了相关模型的结构(即import本地文件中的函数,而不是库中的),并且进行微调后,xxx.Pipeline.from_pretrained并不会加载我们本地的模型结构,依旧是从库中调用。

例如:在diffusers库中有model_A.py,其中包含模型A_function(),为了改动模型A的结构,一般会把该模型移至本地,从本地加载;但是当微调完模型后,xxx.Pipeline.from_pretrained()还是会按照库中的函数进行调用,并且由于from_pretrained()封装较深,直接对pipeline的改动会较为复杂。

解决:

其实xxx.Pipeline.from_pretrained()在加载模型时,通常会按照model_path路径中的model.json/model_index.json来加载,其中的内容例如为:

{"_class_name": "ModelPipeline","_diffusers_version": "0.31.0.dev0","scheduler": ["diffusers","ModelScheduler"],"text_encoder": ["transformers","Text_EncoderModel"],"tokenizer": ["transformers","Text_Tokenizer"],"transformer": ["diffusers","ModelA_Transformer3DModel"],"vae": ["diffusers","AutoencoderKL"]
}

在该json文件中,会告诉xxxPipeline.from_pretrained()从哪个库中调用哪个模型,例如从diffusers中调用ModelA_Transformer3DModel,当我们从本地加载该模型时,只需要在该json文件中将diffusers修改为本地的文件路径即可,例如:

{"_class_name": "ModelPipeline","_diffusers_version": "0.31.0.dev0","scheduler": ["diffusers","ModelScheduler"],"text_encoder": ["transformers","Text_EncoderModel"],"tokenizer": ["transformers","Text_Tokenizer"],"transformer": ["/home/user/model/", # 或者同project路径下: model/model_A"ModelA_Transformer3DModel"],"vae": ["diffusers","AutoencoderKL"]
}

这样,from_pretrained()就会从本地该模型所在文件的路径/home/user/model中去加载ModelA_Transformer3DModel.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/500352.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android.enableJetifier=true的作用:V4包的类自动编程成了androidx包的类,实现androidx的向下兼容

结论:引入androidx包后,可以兼容旧版本v4包的插件,把之前的 implementation com.yinglan.alphatabs:library:1.0.8 引入的组件中使用v4包的类,里面V4包自动反编译成 androidx包的类 结论; ‌V4包的类自动编程成了androidx包的…

详解MySQL在Windows上的安装

目录 查看电脑上是否安装了MySQL 下载安装MySQL 打开MySQL官网,找到DOWNLOADS 然后往下翻,找到MySQL Community(GPL) Downloads>> 然后找到MySQL Community Server 然后下载,选择No thanks,just start my download. 然后双击进行…

excel操作

来源:B站默默亚 一、版本识别 特点:向后兼容;高版本可以打开低版本,低版本不可以打开高版本 工作中,给老板最低版本,即2003版本 二、文件的扩展名 三、excel页面

最大化堡垒补给数量的策略与实现

最大化堡垒补给数量的策略与实现 问题描述输入格式输出格式问题分析解决方案代码实现代码解释问题描述 可怕的战争发生了,小度作为后勤保障工作人员,为了保卫国家而努力。现在有 N 个堡垒需要补给,然而总的预算 B 是有限的。每个堡垒需要价值 P(i) 的补给,并且需要 S(i) 的…

手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电

手机实时提取SIM卡打电话的信令声音 --双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中,我们论述了局域网SIP坐席通过手机外呼出去时,手机中主副卡的呼叫调度策略。 但…

国产手机嘴上喊着挑战苹果,实际行动却已承认失败,真的干不过

国产手机年年喊着挑战苹果,在苹果的iPhone15和iPhone16都被诟病创新不足的时候,国产手机更是以为迎来了赶超苹果的机会,然而随着年底的到来,诸多国产手机品牌的实际行动却说明他们其实已经承认败给苹果了。 近几周,国产…

微信小程序:定义页面标题,动态设置页面标题,json

1、常规设置页面标题 正常微信小程序中,设置页面标题再json页面中进行设置,例如 {"usingComponents": {},"navigationBarTitleText": "标题","navigationBarBackgroundColor": "#78b7f7","navi…

鸿蒙应用开发启航计划

以前有过简单的学习了解,但是现在工作内容的原因,要专门搞这个,因此需要更加熟练地掌握鸿蒙应用开发。 1.开发IDE -- DevEco Studio Windows环境 运行环境要求 为保证DevEco Studio正常运行,建议电脑配置满足如下要求&#xff…

LabVIEW 实现自动对焦的开发

自动对焦(Autofocus, AF)技术是通过分析图像或传感器信号,动态调整焦点位置以实现清晰成像或高精度定位的过程。在LabVIEW中,可以通过集成信号采集、数据处理、控制算法和硬件接口模块,实现多种自动对焦方法&#xff0…

网络安全 | 物联网安全:从设备到网络的全方位防护

网络安全 | 物联网安全:从设备到网络的全方位防护 一、前言二、物联网设备安全2.1 物联网设备的特点与安全风险2.2 物联网设备安全防护策略 三、物联网网络通信安全3.1 物联网网络通信的安全挑战3.2 物联网网络通信安全防护措施 四、物联网数据安全4.1 物联网数据的…

C# OpenCV机器视觉:目标跟踪

在一个阳光明媚的下午,阿强正在实验室里忙碌,突然他的同事小杨走了进来,脸上挂着一丝困惑。 “阿强,我的目标跟踪项目出了问题!我想跟踪一个移动的物体,但总是跟丢!”小杨一边说,一…

JSON结构快捷转XML结构API集成指南

JSON结构快捷转XML结构API集成指南 引言 在当今的软件开发世界中,数据交换格式的选择对于系统的互操作性和效率至关重要。JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据表…

OpenAI发布o3:圣诞前夜的AI惊喜,颠覆性突破还是技术焦虑?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Springboot使用RabbitMQ实现关闭超时订单的一个简单示例

1.maven中引入rabbitmq的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2.application.yml中进行rabbitmq相关配置&#xff1a; # rabbit…

数据挖掘——决策树分类

数据挖掘——决策树分类 决策树分类Hunt算法信息增益增益比率基尼指数连续数据总结 决策树分类 树状结构&#xff0c;可以很好的对数据进行分类&#xff1b; 决策树的根节点到叶节点的每一条路径构建一条规则&#xff1b;具有互斥且完备的特点&#xff0c;即每一个样本均被且…

DeepSeek V3“报错家门”:我是ChatGPT

搜 &#xff1a;海讯无双Ai 要说这两天大模型圈的顶流话题&#xff0c;那绝对是非DeepSeek V3莫属了。 不过在网友们纷纷测试之际&#xff0c;有个bug也成了热议的焦点—— 只是少了一个问号&#xff0c;DeepSeek V3竟然称自己是ChatGPT。 甚至让它讲个笑话&#xff0c;生成…

haproxy+nginx负载均衡实验

准备三台虚拟机&#xff1a; HAProxy 服务器192.168.65.131Web 服务器 1192.168.65.132Web 服务器 2192.168.65.133 在 HAProxy 服务器&#xff08;192.168.65.131&#xff09;上操作&#xff1a; 安装 HAProxy&#xff1a; sudo yum install -y haproxy编辑 HAProxy 配置…

获取 Astro Bot AI 语音来增强您的游戏体验!

有很多用户尝试过Astro Bot&#xff0c;却被Astro Bot可爱的声音所吸引。您是否想知道如何使用 Astro Bot 语音来拨打恶作剧电话或用他的声音说话&#xff1f;如果您有&#xff0c;那么这篇文章适合您。我们将向您展示如何为 Astro Bot 提供逼真的 AI 声音并在在线对话中使用它…

c++表达范围勿用数学符号

目的 遇上了一个C基础问题&#xff0c;一下子陷到里面&#xff0c;不知怎么回事了&#xff0c;知道后&#xff0c;又感觉太可笑。 这也许就是成长的代价。 下面就是细说说所遇上的问题。 关于C逻辑的一些知识点&#xff1a; 定义: 用逻辑运算符将两个表达式链接起来的式子称为…

JVM对象内存分配

1 栈上分配 栈空间随着方法执行完毕而回收通过栈上分配对象内存空间的方式&#xff0c;减少对堆空间的使用&#xff0c;从而减少gc的压力&#xff0c;提升程序性能 逃逸分析&#xff1a;分析对象的作用域&#xff0c;判断对象所需内存是否可以在栈上分配当对象没有被外部方法或…