开源模型应用落地-qwen模型小试-入门篇(五)

一、前言

    这是关于qwen模型入门的最后一篇文章。主要介绍如何使用魔搭的API在本地调用qwen模型。此外,通过阅读这一系列的文章,如果您真的亲自动手实践过,我相信您已经掌握了qwen模型的基本使用方法。


二、术语

2.1. ModelScope社区

    打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单。

    汇聚各领域最先进的机器学习模型,提供模型探索体验、推理训练、部署和应用的一站式服务。


三、前置条件

3.1.windows操作系统

3.2.提前下载好Qwen-1.8B-Chat模型

    当然通过代码在线下载也可以...只是没必要浪费这个时间

3.3. 安装依赖库(记得要在虚拟环境下执行哦)

pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple

四、技术实现

4.1. 非流式调用

def chat(model,tokenizer,message,history):try:resp,his = model.chat(tokenizer, message, system='你是一位乐于助人的人工智能助手,愿意解决人类提出的各种问题', history=history)return resp,hisexcept Exception:traceback.print_exc()

4.2. 流式调用

def chat_stream(model,tokenizer,message,history):position = 0result = []try:for response in model.chat_stream(tokenizer, message, system='你是一位乐于助人的人工智能助手,愿意解决人类提出的各种问题',history=history):result.append(response[position:])position = len(response)yield "".join(result)except Exception:traceback.print_exc()

五、完整代码

import tracebackfrom modelscope import AutoModelForCausalLM,AutoTokenizer
from modelscope import GenerationConfig
import timemodelPath = "E:\\model\\qwen-1_8b-chat"def chat_stream(model,tokenizer,message,history):position = 0result = []try:for response in model.chat_stream(tokenizer, message, system='你是一位乐于助人的人工智能助手,愿意解决人类提出的各种问题',history=history):result.append(response[position:])position = len(response)yield "".join(result)except Exception:traceback.print_exc()def chat(model,tokenizer,message,history):try:resp,his = model.chat(tokenizer, message, system='你是一位乐于助人的人工智能助手,愿意解决人类提出的各种问题', history=history)return resp,hisexcept Exception:traceback.print_exc()def loadTokenizer():tokenizer = AutoTokenizer.from_pretrained(modelPath,trust_remote_code=True)return tokenizerdef loadModel(config):model = AutoModelForCausalLM.from_pretrained(modelPath, device_map="cpu",trust_remote_code=True).eval()model.generation_config = configreturn modelif __name__ == '__main__':config = GenerationConfig.from_pretrained(modelPath, trust_remote_code=True, top_p=0.9, temperature=0.9,repetition_penalty=1.1, do_sample=True, max_new_tokens=8192)tokenizer = loadTokenizer()model = loadModel(config)start_time = time.time()message = "能介绍一些我家的特产吗?"history = [('hi,你好','你好!有什么我可以帮助你的吗?'),('我家在广州,很好玩哦','广州是一个美丽的城市,有很多有趣的地方可以去。'),]resp,his = chat(model,tokenizer,message,history)print(f'resp: {resp}, his: {his}')response = chat_stream(model,tokenizer,message,history)result = []for r in response:result.append(r)print(result[-1])end_time = time.time()print("执行耗时: {:.2f}秒".format(end_time-start_time))

modelscope vs transformers的差异:

modelscope:

transformers:


六、附带说明

    可能有些朋友会认为这些内容很简单,或者觉得在网上可以找到这些资料。但我可以负责任地说,虽然网上可能有一些代码,但核心部分通常被屏蔽了。自己去摸索的话,可能会花费很长时间,最终仍然无法成功运行。现在,我将所有的基础知识以适合阅读的、最连贯的方式呈现给您,希望能帮助有需要的您快速入门,减少走弯路的时间。

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

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

相关文章

【运维】安装双系统之后,如何删除主硬盘的Linux的引导,图文教程

前置条件:已经安装了windows10系统和Linux系统,而且windows10系统是C盘主要盘,Linux系统是安装在别的硬盘上,这个时候C盘主要盘里面的引导分区里是由Linux的引导的,所以打开电脑之后才能让你选是使用windows系统还是使…

pyqt5+python子域名扫描程序

import sysfrom PyQt5 import uic from PyQt5.QtWidgets import * #requests库内置了不同的方法来发送不同类型的http请求 import requests#BS主要功能是从网页抓取数据,提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能 from bs4 import Beau…

ValueError: Unable to read workbook: could not read strings from data.xlsx解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

flutter在windows系统上实现左右水平滑动问题

在个问题在github也有记录:https://github.com/flutter/flutter/issues/105095 就是flutter使用listview等可以滑动的组件来左右滚动的时候,不能正常工作,也就是无效,所以下面大家开始讨论这个问题。 翻阅大家讨论的内容&#x…

交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装

AArch64 是随 ARMv8 ISA 一起引入的 64 位架构,用于执行 A64 指令的计算机。而且在 AArch64 状态下执行的代码只能使用 A64 指令集。,而不能执行 A32 或 T32 指令。但是,与 AArch32 中不同,在64位状态下,指令可以访问 …

初识Mybatis框架技术(上)

文章目录 MyBatis简介MyBatis特性搭建MyBatis 核心配置文件详解 MyBatis简介 MyBatis特性 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis可以使用简单的XML或注解用于配置和原始…

前端基础面试题大全

一、Vue 文章目录 一、Vue1、vue 修改数据页面不重新渲染**数组/对象的响应式 ,vue 里面是怎么处理的?** 2、生命周期Vue 生命周期都有哪些?父子组件生命周期执行顺序 3、watch 和 computed 的区别4、组件通信(组件间传值&#xf…

DAY05_Spring—SpringAopAop案例-缓存控制

目录 1 Spring AOP1.1 AOP介绍1.2 关于AOP名词介绍1.3 通知类型1.4 切入点表达式1.5 AOP入门案例1.5.1 导入jar包1.5.2 准备代码1.5.3 配置切面类1.5.4 编辑配置类1.5.5 编辑测试代码 1.6 关于表达式写法1.6.1 关于annotation切入点相关代码 1.7 关于通知方法测试1.7.1 抽取切入…

Visual Studio 下载安装教程,附安装包和工具,Visual Studio 2022,Visual Studio所有版本都有

前言 Visual Studio是微软推出的一款C编译器,将“高级语言"翻译为"机器语言(低级语言)"的程序,VS是一个非常完整的开发工具集,包括了所有软件生命周期中所需的大部分工具,如UML工具、代码管控工具、集…

Ubuntu 22.04 安装MySql

MySQL是非常常用的关系型数据库,无论是大厂还是小厂,都有它的身影。最大的优点是免费,安装起来也比较简单。 MySQL的架构 画了个简图,描述了下MySQL的架构。 其中的比较有趣的点在于连接池和存储引擎。连接池缓存了数据库和客户端的TCP连接,以减少建立连接的开销。存储引…

裸辞后找工作有多难?分享个人经历+面经+学习路线【内含免费下载初级前端面试题】- 回忆我的2023

👉 个人博客主页 👈 📝 一个努力学习的程序猿 专栏: HTML和CSS JavaScript jQuery Vue Vue3 React TypeScript uni-app Linux 前端面试分享 前端学习方案分享(VitePress、html2canvasjspdf、vuedraggable、videojs) 前端踩坑日记&…

Three.JS教程1 环境搭建、场景与相机

Three.JS教程1 环境搭建、场景与相机 一、Three.JS简介二、环境搭建1. 开发准备2. 安装 three.js3. 新建文件index.htmlmain.js 4. 关于附加组件5. 启动 三、创建场景1. 场景的概念2. 相机的概念3. 相机的几个相关概念(1)视点(Position&#…