大模型部署实践第一天——基于Colab体验完整部署流程
一、Colab初始配置
首先打开Colab,更改运行时类型选择提供的gpu。
然后我们需要挂在谷歌云盘,用于保存我们的所有操作。因为每次重启后笔记本的修改都会消失,为了防止重复操作,我们需要挂载我们谷歌云盘,实现像修改本地文件夹一样,在谷歌云盘上进行我们的一切操作。
# 挂载Google Drive,用于持久化存储模型
from google.colab import drive
drive.mount("/content/drive")
然后我们执行以下命令安装依赖
# 挂载Google Drive,用于持久化存储模型
!pip install -q bitsandbytes transformers accelerate flask nest-asyncio pyngrok
!pip install -U bitsandbytes
需要注意的是,执行完上面的安装后,我们需要重启笔记本,这样才能生效。
二、加载大模型
我们通过下面的代码,从hugging下载开源大模型
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
import torch
# 创建 BitsAndBytesConfig 对象,设置量化为 4bit
quantization_config = BitsAndBytesConfig(load_in_4bit=True)
model_id = "tiiuae/falcon-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype=torch.float16,
quantization_config=quantization_config,
trust_remote_code=True,
)
下载过程如下图:
其中我们通过load_in_4bit用于量化模型以减少对内存的需求。这个我们后面详细了解
第一次运行以后我们需要保存模型到云盘中,这样就不用每次都去下载了
三、优化加速,构建生成器
通过如下代码,基于模型,分词器和模型参数构建生成器。它是我们调用大模型回答问题的工具。
# 启用Transformer加速
from transformers import pipeline
generator = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
model_kwargs={"temperature":0.7, "max_length":200}
)
四、构建REST API服务,并进行测试
我们构建一个flask服务如下:
from flask import Flask, request, jsonify
import threading
app = Flask(__name__)
@app.route('/generate', methods=['POST'])
def generate():
text = request.json.get('text', '')
inputs = tokenizer(text, return_tensors="pt").to("cuda")
outputs = model.generate(
inputs.input_ids,
max_new_tokens=100,
temperature=0.7,
do_sample=True
)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
return jsonify({"response": result})
# 后台启动Flask
threading.Thread(target=app.run, kwargs={'host':'0.0.0.0', 'port': 5000}).start()
同时,我们利用localtunnel来实现公网访问
!npm install -g localtunnel
!lt --port 5000 --subdomain myfalcon
我们可以看到访问的地址:
最后我们在cmd中,输入下列命令来获取回复:
curl -X POST -H “Content-Type: application/json” -d “{“text”:“你好”}” https://myfalcon.loca.lt/generate
可以看到回复如下:
云盘分享
下面是我的谷歌笔记本,可以在colab中运行查看
https://colab.research.google.com/drive/1W7bzTtgHNqhqe4Sv7fS-OlLw63Da2LWS?usp=sharing