老杨说话的地方
  • 首页
  • 关于老杨
  • 博客时间
  • 文章分类
    • 人生感悟
    • 信息技术
    • 往事随风
    • 情感随笔
    • 文学创作
    • 生活记录
    • 评论杂谈
    • 人工智能
  • 留言本
我是老杨
张驰有度 宠辱不惊
  1. 首页
  2. 人工智能
  3. 正文

加载onnx模型进行推理

2023年07月05日 2626点热度 1人点赞 0条评论

onnx的模型加载,需要用到onnx runtime。

推理代码:

import torch
import onnxruntime as rt
from transformers import LlamaTokenizer

def generate_prompt(text):
    return f"""Below is an instruction that describes a task. Write a response that appropriately completes the request.

### Instruction:
{text}

### Response:"""

tokenizer = LlamaTokenizer.from_pretrained("minlik/chinese-llama-7b-merged")
text = '介绍一下北京'
prompt = generate_prompt(text)
input = tokenizer.encode(prompt, return_tensors='pt')
x = input.numpy()
sess = rt.InferenceSession('your_model_path_and_name.onnx')
max_words=2048
for i in range(0,max_words-1):
    with torch.no_grad():
        outputs = sess.run(None, {"input": x})
        predictions = outputs[0] #将output中的第一个元素取出来,就是预测的字的概率,第二个元素是past,这里我们只需要第一个元素。
        predictions=torch.from_numpy(predictions)
    predicted_index = torch.argmax(predictions[0, -1, :]).item()#这里最后一个tensor,就是下一个字。
    predicted_text = tokenizer.decode([predicted_index])
    if predicted_text == '</s>':
        break;
    else:
        print(predicted_text)
    prompt=prompt+predicted_text
    input = tokenizer.encode(prompt, return_tensors='pt')
    x = input.numpy()

需要注意:

  1. tokenizer后的文本,返回的是torch张量,所以,需要先转换成numpy。
  2. sess.run(None, {"input": x})中的input,对应于转换时自定义的名字。
  3. predictions = outputs[0],这里是把输出的结果第一个元素取出来,第一个元素就是所有预测的下一个字的概率,最后一个张量就是要预测的字。predicted_index = torch.argmax(predictions[0, -1, :]).item()就是对最后一个元素进行softmax,得到这个字在词典中的id。使用tokenizer的decode方法后就得到了真正的预测的字。
  4. 预测完一个字后,把这个字和前面的内容,都合并在一起,再继续预测下一个字,直到遇到结束符号</s>。
标签: import llamatokenizer onnx
最后更新:2023年07月05日

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

点赞
订阅评论
提醒
guest

guest

0 评论
内联反馈
查看所有评论

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

搜索
最新 热点 随机
最新 热点 随机
中国是不是体育强国? 成功的必备因素 关于华为 别再侮辱我的智商 春秋航空让人长见识 第二青春计划失败 第二青春计划 模型训练错误RuntimeError: expected scalar type Half but found Float 加载onnx模型进行推理 PyTorch模型转onnx格式
LaTex中设置字体的正确方法 晴迷星途25无能为力 正版软件生存记 我的能量哲学(二)人的一生为何如此辛苦 人性本恶 Debian的vi编辑器无法输入正常的字符 强大的防火墙 不要道歉 超级无敌立体连环网络营销 推荐两款免费的文本编辑器
最新评论
  • 关于华为上的老杨确实,苹果手机系统还是有优势的。
  • 关于华为上的乱云AKAY自从换了苹果手机后,对手机再没以前那样热爱研究了,主要是系统省心。
  • 第二青春计划失败上的老杨第二都失败了,第三就算了吧。
  • 春秋航空让人长见识上的老杨应该提供一点水,至少给不想买水的人一个选择的空间。
  • 别再侮辱我的智商上的老杨那个很好,很值得。
  • 关于华为上的老杨Next系统基本没广告。大部分广告都可以关掉吧,我记得我写过一个文章,…
  • 第二青春计划失败上的xqiushi开始第三青春计划吧。
  • 春秋航空让人长见识上的xqiushi那个桌板能放下小米多看电子书,还是不错的。 这个矿泉水市面上没有,特供…
  • 别再侮辱我的智商上的xqiushi只投了那100亿的项目。
  • 关于华为上的xqiushi今年我爸的手机也换成华为,家庭里手机基本都是华为。最不满意的一点就是广…

Google java jsp linux QQ wordpress 中国 习惯 人生 公司 决定 博士 博客 同学 国家 大学 学习 实验室 家 小说 工作 开始 思考 情感 手机 技术 推荐 插件 数据库 文件 晴迷星途 朋友 生活 电影 相声 程序 笔记 网站 网络 置顶 美国 评论 软件 音乐 项目

关注公众号

COPYRIGHT © 2020 老杨说话的地方. ALL RIGHTS RESERVED.

THEME KRATOS YANG Modified BY 老杨

鲁ICP备17014997号-4

鲁公网安备 37021302000754号