????一、前言
? ? ?剛開始接觸AI時,您可能會感到困惑,因為面對眾多開源模型的選擇,不知道應該選擇哪個模型,也不知道如何調用最基本的模型。但是不用擔心,我將陪伴您一起逐步入門,解決這些問題。
? ? ?在信息時代,我們可以輕松地通過互聯(lián)網(wǎng)獲取大量的理論知識和概念。然而,僅僅掌握理論知識并不能真正幫助我們成長和進步。實踐是將理論知識轉化為實際技能和經(jīng)驗的關鍵。
? ? 本章將學習如何在低成本下,使用transformer設置chatglm3-6b模型參數(shù)/System Prompt/歷史對話
? ? qwen模型教程入口:
開源模型應用落地-qwen模型小試-入門篇(三)
? ??baichuan模型教程入口:
開源模型應用落地-baichuan2模型小試-入門篇(三)
二、術語
2.1. CentOS
? ? CentOS是一種基于Linux的自由開源操作系統(tǒng)。它是從Red Hat Enterprise Linux(RHEL)衍生出來的,因此與RHEL具有高度的兼容性。CentOS的目標是提供一個穩(wěn)定、可靠且免費的企業(yè)級操作系統(tǒng),適用于服務器和桌面環(huán)境。
2.2. GPU
? ? 是Graphics Processing Unit(圖形處理單元)的縮寫。它是一種專門設計用于處理圖形和圖像計算的處理器。與傳統(tǒng)的中央處理器(CPU)相比,GPU具有更高的并行計算能力,適用于處理大規(guī)模數(shù)據(jù)并進行復雜的計算任務。
三、前置條件
3.1. linux操作系統(tǒng)
3.2.?下載chatglm3-6b模型
從huggingface下載:https://huggingface.co/THUDM/chatglm3-6b/tree/main
?
從魔搭下載:魔搭社區(qū)匯聚各領域最先進的機器學習模型,提供模型探索體驗、推理、訓練、部署和應用的一站式服務。https://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/fileshttps://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/files?
?3.3. 創(chuàng)建虛擬環(huán)境&安裝依賴
conda create --name chatglm3 python=3.10
conda activate chatglm3
pip install protobuf transformers==4.30.2 cpm_kernels torch>=2.0 sentencepiece accelerate
pip install modelscope
四、技術實現(xiàn)
4.1. 使用transformers方式
# -*- coding = utf-8 -*-
from transformers import AutoTokenizer, AutoModelForCausalLM
import time
import traceback
modelPath = "/model/chatglm3-6b"
def chat(model, tokenizer, message, history, system):
messages = []
if system is not None:
messages.append({"role": "system", "content": system})
if history is not None:
for his in history:
user,assistant = his
messages.append({"role": "user", "content": user})
messages.append({"role": "assistant", 'metadata': '', "content": assistant})
try:
for response in model.stream_chat(tokenizer,message, messages, max_length=512, top_p=0.9, temperature=0.45, repetition_penalty=1.1,do_sample=True):
_answer,_history = response
yield _answer
except Exception:
traceback.print_exc()
def loadTokenizer():
tokenizer = AutoTokenizer.from_pretrained(modelPath, use_fast=False, trust_remote_code=True)
return tokenizer
def loadModel():
model = AutoModelForCausalLM.from_pretrained(modelPath, device_map="auto", trust_remote_code=True).cuda()
model = model.eval()
# print(model)
return model
if __name__ == '__main__':
model = loadModel()
tokenizer = loadTokenizer()
start_time = time.time()
message = "我家有什么好玩?"
history = [('hi,你好', '你好!有什么我可以幫助你的嗎?'), ('我家在廣州,很好玩哦', '廣州是一個美麗的城市,有很多有趣的地方可以去。'), ]
system = "你是一個人工智能助手,擅長解決人類的問題"
response = chat(model, tokenizer, message,history,system)
for answer in response:
print(answer)
end_time = time.time()
print("執(zhí)行耗時: {:.2f}秒".format(end_time - start_time))
調用結果:
4.2. 使用modelscope方式
把AutoModelForCausalLM, AutoTokenizer改為從modelscope導入即可
調用輸出
注意:需要安裝modelscope庫
五、附帶說明
5.1. 上下文長度限制
chatglm3-6b的Seq Length只有8k,需要更長文本理解能力的,需要使用對應的模型文章來源:http://www.zghlxwxcb.cn/news/detail-848565.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-848565.html
到了這里,關于開源模型應用落地-chatglm3-6b模型小試-入門篇(三)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!