智能對(duì)話新紀(jì)元:大模型推理服務(wù)
在人工智能的浪潮中,大型語言模型憑借其強(qiáng)大的對(duì)話理解和生成能力,引領(lǐng)了智能對(duì)話技術(shù)的潮流。企業(yè)和個(gè)人對(duì)于私有化智能服務(wù)的需求日益增長(zhǎng),將這樣的大模型部署為專屬服務(wù)顯得尤為重要。今天,讓我們一起探索如何將大模型私有化部署,構(gòu)建你的智能助手。
1. 環(huán)境準(zhǔn)備
首先確保你有一套滿足硬件要求的服務(wù)器或云環(huán)境,通常需要有一塊性能良好的GPU,足夠的內(nèi)存和存儲(chǔ)空間來容納模型和運(yùn)行日志。此外,選擇合適的操作系統(tǒng)(如Ubuntu Linux)并安裝必需的軟件依賴項(xiàng)(如Python、Cuda等)。
2. 獲取模型
你可以從官方倉(cāng)庫或者其他可靠的來源下載預(yù)訓(xùn)練好的模型權(quán)重文件。
以清華ChatGlm為例
模型下載地址:https://huggingface.co/THUDM/chatglm3-6b-32k/tree/main
將模型文件下載到本地
3. 安裝必要的庫
使用pip或conda安裝必需的Python庫,包括但不限于transformers(用于加載和處理模型),torch(PyTorch的核心庫),以及任何其他你可能需要的數(shù)據(jù)處理或服務(wù)框架相關(guān)的庫。
4. 封裝API接口
為了使模型能夠響應(yīng)外部請(qǐng)求,你需要開發(fā)一個(gè)RESTful API或者WebSocket服務(wù),使得客戶端可以通過網(wǎng)絡(luò)發(fā)送請(qǐng)求并接收模型的回復(fù)。這通常涉及到編寫一些后端代碼,比如使用Flask或FastAPI框架。
以下是一個(gè)簡(jiǎn)單的推理腳本 server.py ,只是簡(jiǎn)單的非流式推理腳本。后續(xù)再更新流式推理以及日志的保存腳本。
from __future__ impport print_function
import json
import traceback
import flask
from flask import request , Flask,g,stream_with_context
from flask import Response
from transformers import AutoModel,AutoTokenizer
import torch
import os
import sys
import logging
from logging import handlers
import time
import flask_cors import CORS
import requests
# 下載的模型文件放在推理腳本的同級(jí)目錄的model文件下
tokenizer = AutoTokenizer.from_pretrained("./model/",trust_remote_code=True)
model = AutoModel.from_pretrained("./model",trust_remote_code=True).half().cuda()
model= model.eval()
path = os.path.dirname(os.path.abspath(__file__))
app = Flask(__name__)
CORS(app)
@app.route("/predict",methods=["POST"])
def predict():
try:
post_data = json.load(flask.loads.get_data())
question = post_data.get("question")
history = post_data.get("history")
response, history = model.chat(tokenizer,question,history=history)
res = get_return_json(0,"success",response)
return res
execpt Exception as e:
success = -1
errorMsg = str(e)
res = get_return_json(success,errorMsg,'')
return res
def get_return_json(code,return_msg,result):
return_json = {'return_code':code, 'return_msg':return_msg,'answer': result}
return return_json
if __name__ == "__main__":
app.run(host=='0.0.0.0',port=8080,debug=False,threaded=False)
5. 執(zhí)行腳本
進(jìn)入到server.py 所在的目錄,比如 cd /workspace/server
執(zhí)行 python server.py 即可運(yùn)行服務(wù)
本文轉(zhuǎn)載自 ??AI論文解讀??,作者: 墨瀾
