该怎样经常使用训练好的大模型 大模型训练成功之后可以间接经常使用吗

  • 电脑网络维修
  • 2024-11-15

学习机器学习的人大局部都知道怎样设计并训练一个模型,但开发模型的目标是为了处置业务疑问,所以怎样经常使用大模型也是重中之重。

刚训练好的大模型理想上只管可以用,但因为没有用户接口,所以只能自己用,不可对外提供服务;所以,刚训练好的大模型须要经过一些处置才可以经常使用,包含数据预处置,接口开发等。

huggingface官方地址:需迷信上网

01、大模型加载与保留

训练一个大模型,在训练成功之后最关键的就是要把模型给保留下,而后在经常使用的时刻加载。

在什么状况下须要保留模型?

保留模型关键有两种状况,第一种是从新设计了一个新的模型,第二种是微调过的模型。

当然不论是何种要素,保留模型也有两种方式,一种是间接把模型启动保留,不论是模型自身还是模型参数。第二种是经常使用字典方式保留模型参数。

代码如下所示,这里经常使用的是pytorch自定义模型,假设是从网络中加载的其它模型,可以依据其详细的成功启动保留。

import torchfrom torch import nn# 神经网络结构 当作例子没有详细成功class MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()passdef forward(self, x):return x# 创立一个模型对象model = MyModel()# 第一种保留模型的方式torch.save(model, "my_model.pth")# 第二种保留模型的方式 经常使用dict字段保留参数torch.save(model.state_dict(), "dict_my_model.pth")

或者会有人有不懂,没有训练过的模型也可以保留吗?

只管很多人都会经常使用他人训练好的模型,但有时咱们只有要经常使用其模型结构,不须要其训练的参数,所以就会有人把没有训练过的模型启动保留。而后让他人可以用没用被数据“污染”过的新模型。

比如,pytorch从官方加载模型时就有一个参数,pretrained=false来加载未训练过的模型。当然,用户也可以选用训练过的模型启动微调。

模型的加载

模型既然可以被保留,那么就可以被加载。保留模型有两种方式,加载模型也有两种方式。

第一种方式保留就间接加载,而第二种方式保留就须要先创立一个模型,而后再加载。

须要留意的说,这里加载的是自定义模型,所以必定要把神经网络的结构给引入出去,上方代码的神经网络结构就是MyModel。否则会报错找不到模型,而假设是从网络中加载模型则不会产生这个疑问。

import torchfrom torch import nn# 神经网络结构 当作例子没有详细成功class MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()passdef forward(self, x):return x# 创立一个模型对象model = MyModel()# 第一种保留模型的方式torch.save(model, "my_model.pth")# 第二种保留模型的方式 经常使用dict字段保留参数torch.save(model.state_dict(), "dict_my_model.pth")# 第一种加载模型的方式 有了这个之后就不须要经常使用 model = MyModule()创立模型了load_model = torch.load("my_model.pth")print(load_model)# 第二种加载方式 这里只会加载模型的参数dict_load = torch.load("dict_my_model.pth")print(dict_load)#因此,须要先创立模型,再从字典中加载参数dict_model = MyModel()dict_model.load_state_dict(torch.load("dict_my_model.pth"))print("------------------")print(dict_model)

02、经常使用模型的三种方式

经常使用模型大略有以下三种方式:

第一种方式是间接调用第三方模型服务公司的API接口,比如chatGPT的接口,通义千问接口和百度文心一言等接口。

这种方式最繁难,也不须要懂得大模型的技术,只有要有编程基础会调用接口即可。

而前面两种其实是两种状况,就是自己部署大模型。

自己部署大模型分为两种状况,第一种是经常使用他人训练或微调好的模型,比如huggingface上的模型,pytorch官方提供的模型等;第二种是自己设计并训练模型。

两者的区别就是,第一种经常使用他人的模型,就须要依照他人的要求和规定去经常使用或训练模型。比如,它们或者会对模型启动繁难的输入处置和API封装,咱们自己也可以在其基础之上对模型启动愈加完善的设计。

如下所示,是经常使用huggingface上的大模型。from_pretrained(model_id)就是从huggingface仓库中加载大模型。

from transformers import AutoTokenizer, AutoModelForCausalLM# 大模型名词model_id = "shenzhi-wang/Llama3-8B-Chinese-Chat"# 加载分词器 在人造言语处置中,须要对文字启动分词 并转换为神经网络能够识别的向量格局tokenizer = AutoTokenizer.from_pretrained(model_id)# 加载大模型model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto")""" 用户经常使用,依照大模型提供的输入案例来操作"""messages = [{"role": "system", "content": "You are Llama3-8B-Chinese-Chat, which is finetuned on Llama3-8B-Instruct with Chinese-English mixed).to(model.device)# 大模型只能识别向量格局的数据,所以在开局之前须要对数据启动预处置outputs = model.generate(input_ids,max_new_tokens=1024,do_sample=True,temperature=0.6,top_p=0.9,)# 失掉结果response = outputs[0][input_ids.shape[-1]:]print(tokenizer.decode(response, skip_special_tokens=True))

第二种自定义模型,咱们就须要自己对大模型启动预处置和接口封装。

import torchfrom torch import nn# 神经网络结构 当作例子没有详细成功class MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()passdef forward(self, x):return x# 创立一个模型对象model = MyModel()# 第一种保留模型的方式torch.save(model, "my_model.pth")# 第二种保留模型的方式 经常使用dict字段保留参数torch.save(model.state_dict(), "dict_my_model.pth")# 第一种加载模型的方式 有了这个之后就不须要经常使用 model = MyModule()创立模型了load_model = torch.load("my_model.pth")print(load_model)# 第二种加载方式 这里只会加载模型的参数dict_load = torch.load("dict_my_model.pth")print(dict_load)#因此,须要先创立模型,再从字典中加载参数dict_model = MyModel()dict_model.load_state_dict(torch.load("dict_my_model.pth"))print("------------------")print(dict_model)""" 数据预处置 """def process_prefix(param):# params是输入参数,人造言语处置中就是字符串,计算机视觉处置中就是图片或视频# 把参数转换为张量/向量inputs = torch.Tensor(param)"""当然,这里只是繁难举个例子,实践的预处置要比这复杂的多,岂但要成功配置,还有保障接口的可裁减性,以及下层配置的调用"""return inputs# 把用户输入转化为向量后 输入到模型中resp = dict_model(process_prefix(""))def process_post(resp):"""这里关键对模型的输入启动处置,不同的模型输入数据格局不一,所认为了经常使用的繁难,须要对模型输入启动处置"""

总的来说,模型的经常使用就相似于模型设计中的输入层和输入层,因为每个模型的输入和输入都不一样,所以每个模型的输入和输入都须要启动不凡处置。

开发者对模型启动包装之后,就可以经过API接口或SDK的方式提供应业务人员调用。

原文链接:​ ​​ ​

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/6094.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号