From 6acfae7a43aa481e407728818b3f33c3a5a48198 Mon Sep 17 00:00:00 2001
From: Sxb <2368203939@qq.com>
Date: Sat, 18 Jan 2025 16:52:31 +0800
Subject: [PATCH] add InternLM3-8b-instruct fastapi
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
添加InternLM3-8b-instruct fastapi部署的内容
---
models/InternLM3/InternLM3-8b-instruct.md | 185 ++++++++++++++++++++++
models/InternLM3/images/01-1.png | Bin 0 -> 96646 bytes
models/InternLM3/images/01-2.png | Bin 0 -> 82431 bytes
models/InternLM3/images/01-3.png | Bin 0 -> 32867 bytes
4 files changed, 185 insertions(+)
create mode 100644 models/InternLM3/InternLM3-8b-instruct.md
create mode 100644 models/InternLM3/images/01-1.png
create mode 100644 models/InternLM3/images/01-2.png
create mode 100644 models/InternLM3/images/01-3.png
diff --git a/models/InternLM3/InternLM3-8b-instruct.md b/models/InternLM3/InternLM3-8b-instruct.md
new file mode 100644
index 00000000..6668e022
--- /dev/null
+++ b/models/InternLM3/InternLM3-8b-instruct.md
@@ -0,0 +1,185 @@
+# InternLM3-8B-instruct FastAPI部署
+
+InternLM3 开源了一个具有 80 亿参数的指令模型,名为 **InternLM3-8B-Instruct**,旨在用于通用任务和高级推理。该模型具有以下特点:
+
+- **在降低成本的同时提升性能**:在推理和知识密集型任务中,表现超越了像 Llama3.1-8B 和 Qwen2.5-7B 等模型。值得注意的是,InternLM3 仅在 4 万亿高质量标记上进行训练,比其他同规模的语言模型节省了超过 75% 的训练成本。
+- **深度思考能力**:InternLM3 支持两种模式:一种是通过长链思维解决复杂推理任务的深度思考模式,另一种是用于流畅用户交互的正常响应模式。
+
+
+
+## 环境准备
+
+本文基础环境如下:
+
+```c
+----------------
+ubuntu 22.04
+python 3.12
+cuda 12.1
+pytorch 2.3.0
+----------------
+```
+
+> 本文默认学习者已安装好以上 Pytorch(cuda) 环境,如未安装请自行安装。
+
+首先 `pip` 换源加速下载并安装依赖包
+
+```c
+# 升级pip
+python -m pip install --upgrade pip
+# 更换 pypi 源加速库的安装
+pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
+
+pip install requests==2.32.3
+pip install fastapi==0.104.1
+pip install uvicorn==0.24.0
+pip install transformers==4.48.0
+pip install huggingface-hub==0.27.1
+pip install accelerate==0.24.1
+pip install modelscope==1.11.0
+```
+
+> 考虑到部分同学配置环境可能会遇到一些问题,我们在AutoDL平台准备了InternLM3-8B-instruct的环境镜像,点击下方链接并直接创建Autodl示例即可。
+
+
+
+## 模型下载
+
+使用 `modelscope` 中的 `snapshot_download` 函数下载模型,第一个参数为模型名称,参数 `cache_dir` 为模型的下载路径。
+
+新建 `model_download.py` 文件并在其中输入以下内容,粘贴代码后请及时保存文件,如下图所示。并运行 `python model_download.py` 执行下载,模型大小约为 17.5GB,下载模型大概需要 10-15 分钟。
+
+```py
+#模型下载
+from modelscope import snapshot_download
+model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm3-8b-instruct',cache_dir='/root/autodl-tmp', revision='master')
+```
+
+> 注意:记得修改 `cache_dir` 为你的模型下载路径哦~
+
+## 代码准备
+
+新建 `api.py` 文件并在其中输入以下内容,粘贴代码后请及时保存文件。记得将tokenizer和model的路径改成上面模型下载的cache_dir的路径。以下代码有很详细的注释,大家如有不理解的地方,欢迎提出 issue 。
+
+```python
+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(): # 检查是否可用CUDA
+ with 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},
+ ]
+ tokenized_chat = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to("cuda")
+ generated_ids = model.generate(tokenized_chat, max_new_tokens=1024, temperature=1, repetition_penalty=1.005, top_k=40, top_p=0.8)
+ generated_ids = [
+ output_ids[len(input_ids):] for input_ids, output_ids in zip(tokenized_chat, generated_ids)
+ ]
+ response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
+ now = datetime.datetime.now() # 获取当前时间
+ time = now.strftime("%Y-%m-%d %H:%M:%S") # 格式化时间为字符串
+ # 构建响应JSON
+ answer = {
+ "response": response,
+ "status": 200,
+ "time": time
+ }
+ # 构建日志信息
+ log = "[" + time + "] " + '", prompt:"' + prompt + '", response:"' + repr(response) + '"'
+ print(log) # 打印日志
+ torch_gc() # 执行GPU内存清理
+ return answer # 返回响应
+
+# 主函数入口
+if __name__ == '__main__':
+ # 加载预训练的分词器和模型
+ tokenizer = AutoTokenizer.from_pretrained("autodl-tmp/Shanghai_AI_Laboratory/internlm3-8b-instruct", trust_remote_code=True)
+ model = AutoModelForCausalLM.from_pretrained("autodl-tmp/Shanghai_AI_Laboratory/internlm3-8b-instruct", torch_dtype=torch.float16, trust_remote_code=True).cuda()
+ model = model.eval()
+
+ # 启动FastAPI应用
+ # 用6006端口可以将autodl的端口映射到本地,从而在本地使用api
+ uvicorn.run(app, host='0.0.0.0', port=6006, workers=1) # 在指定端口和主机上启动应用
+```
+
+
+
+然后在当前文件的路径下面运行:
+
+```python
+python api.py
+```
+
+出现下面的信息就说明成功运行了。
+
+
+
+
+
+## 调用API
+
+默认部署在 6006 端口,通过 POST 方法进行调用。可以使用命令行curl和代码的方式来调用。
+
+命令行:
+
+```c
+curl -X POST "http://127.0.0.1:6006" \
+ -H 'Content-Type: application/json' \
+ -d '{"prompt": "你好"}'
+```
+
+返回结果:
+
+
+
+
+
+使用 python 中的 requests 库进行调用,如下所示:
+
+```python
+import requests
+import json
+
+def get_completion(prompt):
+ headers = {'Content-Type': 'application/json'}
+ data = {"prompt": prompt}
+ response = requests.post(url='http://127.0.0.1:6006', headers=headers, data=json.dumps(data))
+ return response.json()['response']
+
+if __name__ == '__main__':
+ print(get_completion('你好'))
+```
+
+返回结果:
+
+
+
+
+
diff --git a/models/InternLM3/images/01-1.png b/models/InternLM3/images/01-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..93044e4889e3fe7df6157234078d81ad121ecd7f
GIT binary patch
literal 96646
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Æ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