文明校园建设专题网站,wordpress英文模板,成都广告公司名单,word模板免费下载素材系列篇章#x1f4a5;
No.文章1【Qwen部署实战】探索Qwen-7B-Chat#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B#xff1a;通过FastApi框架实现API的部署与调用4【Q…系列篇章
No.文章1【Qwen部署实战】探索Qwen-7B-Chat阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B通过FastApi框架实现API的部署与调用4【Qwen2部署实战】Ollama上的Qwen2-7B一键部署大型语言模型指南5【Qwen2部署实战】llama.cpp一键部署高效运行Qwen2-7b模型6【Qwen2部署实战】部署高效AI模型使用vLLM进行Qwen2-7B模型推理 目录 系列篇章引言一、环境准备1、镜像选择2、环境配置 二、模型下载1、模型下载脚本示例 三、代码准备1、FastAPI 应用代码示例 四、API 部署五、API 测试1、使用curl调用API2、使用python的requests库调用API 结语 引言
在人工智能的快速发展中大型语言模型LLM逐渐成为研究和应用的新宠。它们在自然语言处理NLP领域的广泛应用如文本生成、翻译、摘要等任务中展现出了卓越的性能。Qwen2-7B作为其中的一个代表不仅因其强大的能力受到关注更因其开源的特性让广大研究者和开发者能够自由地使用和创新。本文将详细介绍在AutoDL平台上部署Qwen2-7B模型并利用FastAPI框架创建API服务的全流程。
一、环境准备
首先我们需要在AutoDL平台租赁一台配备RTX 3090/24G显存的显卡机器。选择适合的镜像这里我们选择的是PyTorch-2.1.0-3.10(ubuntu20.04)-12.1这个镜像为我们后续的操作提供了必要的基础环境。
1、镜像选择
PyTorch版本: 2.1.0操作系统: Ubuntu 22.04CUDA版本: 12.1
2、环境配置
通过JupyterLab访问服务器并打开终端进行环境配置。使用以下命令更换pip源以加速依赖包的下载
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这一步是必要的因为默认的pip源在国外对于国内用户来说访问速度较慢更换为清华大学的镜像源可以显著提高下载速度。
接着安装所需的依赖包
pip install fastapi0.104.1 uvicorn0.24.0.post1 requests2.25.1 modelscope1.11.0 transformers4.41.0 streamlit1.24.0 sentencepiece0.1.99 accelerate0.24.1 transformers_stream_generator0.0.4这些依赖包含了构建Web服务的FastAPI框架、用于提供服务的Uvicorn ASGI服务器以及其他与模型加载和运行相关的库。
二、模型下载
利用modelscope库的snapshot_download函数下载Qwen2-7B-Instruct模型 也可以采用git下载 git clone https://www.modelscope.cn/qwen/Qwen2-7B-Instruct.git
1、模型下载脚本示例
import torch
from modelscope import snapshot_download# snapshot_download函数用于下载模型
model_dir snapshot_download(qwen/Qwen2-7B-Instruct, # 模型名称cache_dir/root/autodl-tmp, # 缓存目录revisionmaster # 版本号
)执行该脚本将从modelscope下载Qwen2-7B-Instruct模型并保存到指定的缓存目录中。
注意检查文件大小确认是否下载完整
三、代码准备
在/root/autodl-tmp路径下创建fastapi_Demo.py文件编写FastAPI应用代码用于加载模型并提供API服务。
1、FastAPI 应用代码示例
from fastapi import FastAPI, Request
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import uvicorn
import json
import datetime
import torch# 设置设备参数
DEVICE cuda # 使用CUDA
DEVICE_ID 0 # CUDA设备ID如果未设置则为空
CUDA_DEVICE f{DEVICE}:{DEVICE_ID} if DEVICE_ID else DEVICE # 组合CUDA设备信息# 清理GPU内存函数
def torch_gc():if torch.cuda.is_available(): # 检查是否可用CUDAwith torch.cuda.device(CUDA_DEVICE): # 指定CUDA设备torch.cuda.empty_cache() # 清空CUDA缓存torch.cuda.ipc_collect() # 收集CUDA内存碎片# 创建FastAPI应用
app FastAPI()# 处理POST请求的端点
app.post(/)
async def create_item(request: Request):global model, tokenizer # 声明全局变量以便在函数内部使用模型和分词器json_post_raw await request.json() # 获取POST请求的JSON数据json_post json.dumps(json_post_raw) # 将JSON数据转换为字符串json_post_list json.loads(json_post) # 将字符串转换为Python对象prompt json_post_list.get(prompt) # 获取请求中的提示messages [{role: system, content: You are a helpful assistant.},{role: user, content: prompt}]# 调用模型进行对话生成input_ids tokenizer.apply_chat_template(messages,tokenizeFalse,add_generation_promptTrue)model_inputs tokenizer([input_ids], return_tensorspt).to(cuda)generated_ids model.generate(model_inputs.input_ids,max_new_tokens512)generated_ids [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]response tokenizer.batch_decode(generated_ids, skip_special_tokensTrue)[0]now datetime.datetime.now() # 获取当前时间time now.strftime(%Y-%m-%d %H:%M:%S) # 格式化时间为字符串# 构建响应JSONanswer {response: response,status: 200,time: time}# 构建日志信息log [ time ] , prompt: prompt , response: repr(response) print(log) # 打印日志torch_gc() # 执行GPU内存清理return answer # 返回响应# 主函数入口
if __name__ __main__:# 加载预训练的分词器和模型model_name_or_path /root/autodl-tmp/qwen/Qwen2-7B-Instructtokenizer AutoTokenizer.from_pretrained(model_name_or_path, use_fastFalse)model AutoModelForCausalLM.from_pretrained(model_name_or_path, device_mapauto, torch_dtypetorch.bfloat16)# 启动FastAPI应用# 用6006端口可以将autodl的端口映射到本地从而在本地使用apiuvicorn.run(app, host0.0.0.0, port6006, workers1) # 在指定端口和主机上启动应用 以上代码首先设置了使用CUDA的设备参数并定义了一个清理GPU内存的函数torch_gc。然后创建了一个FastAPI应用并定义了一个处理POST请求的端点用于接收用户的输入提示并利用加载的模型生成回答。最后启动了Uvicorn服务器来运行我们的FastAPI应用。
四、API 部署
通过在终端执行以下命令启动FastAPI应用
cd /root/autodl-tmp
python fastapi_Demo.py执行该命令后如果一切配置正确你将看到应用启动成功的日志信息。
五、API 测试
一旦API服务启动我们可以通过curl或python的requests库进行测试调用。
1、使用curl调用API
curl -X POST http://127.0.0.1:6006 \-H Content-Type: application/json \-d {prompt: 你好}这条命令通过curl工具向我们的API发送一个POST请求并附带了一个简单的输入提示“你好”。
2、使用python的requests库调用API
这段Python脚本定义了一个函数get_completion它使用requests库向API发送POST请求并打印出返回的回答。
import requests
import jsondef get_completion(prompt):headers {Content-Type: application/json}data {prompt: prompt}response requests.post(urlhttp://127.0.0.1:6006, headersheaders, datajson.dumps(data))return response.json()[response]responseget_completion(你好)
response输出
你好很高兴能为你提供帮助。有什么我可以为你做的吗问题你是谁
responseget_completion(你是谁)
response输出
我是阿里云开发的一款超大规模语言模型我叫通义千问。问题AI大模型是什么
responseget_completion(AI大模型是什么)
response输出
AI大模型指的是使用大规模数据和计算资源训练的深度学习模型。这些模型通常包含数以百万计或数以十亿计的参数可以处理复杂的数据结构和任务如自然语言处理、图像识别、语音识别等。它们能够从大量数据中学习到通用的表示和规律并在各种下游任务上取得出色的表现。由于其强大的泛化能力和可扩展性AI大模型在近年来吸引了广泛的关注和研究。问题通义千问这个名字是什么意思
responseget_completion(通义千问这个名字是什么意思)
Response输出
“通义千问”这个名字蕴含了阿里云大模型的几个关键特性。首先“通义”二字取自“通达明智”意在表达模型能够帮助用户获得知识、理解概念、解决疑惑提供智慧和洞察力。同时“通义”也意味着模型具有广泛适用性和跨领域的通用性能够理解和回答各种主题的问题。\n\n其次“千问”代表了模型的强大问答能力。它经过大量训练能够处理和回应包括但不限于历史、科学、技术、艺术、文化等众多领域内的问题并且能够持续学习和进化不断提升其回答问题的质量和准确性。\n\n综上所述“通义千问”不仅体现了阿里云大模型在知识广度和深度上的优势也寓意着其致力于为用户提供全面、准确、有启发性的信息和支持。结语
通过本文的介绍我们成功地在AutoDL平台上部署了Qwen2-7B-Instruct模型并通过FastAPI创建了一个高效的API服务。这不仅展示了开源大模型的强大能力也为开发者提供了一种快速部署和调用大型语言模型的方法。随着技术的不断进步我们期待开源大模型在未来能够更加深入地融入到我们的学习和工作中推动人工智能技术的进一步发展。 更多专栏系列文章AI大模型提示工程完全指南、AI大模型探索之路零基础入门、AI大模型预训练微调进阶、AI大模型开源精选实践、AI大模型RAG应用探索实践 其他专栏可以查看博客主页 作者介绍我是寻道AI小兵资深程序老猿从业10年、互联网系统架构师目前专注于AIGC的探索。 技术交流欢迎关注【小兵的AI视界】公众号或扫描下方二维码加入技术交流群开启编程探索之旅。 精心准备500本编程经典书籍、AI专业教程以及高效AI工具。等你加入与我们一同成长共铸辉煌未来。 如果文章内容对您有所触动别忘了点赞、⭐关注收藏加入我让我们携手同行AI的探索之旅一起开启智能时代的大门