国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ChatGLM2-6B 部署

這篇具有很好參考價值的文章主要介紹了ChatGLM2-6B 部署。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

引言

這是ChatGLM2-6B 部署的閱讀筆記,主要介紹了ChatGLM2-6B模型的部署和一些原理的簡單解釋。

ChatGLM-6B

它是單卡開源的對話模型。

  • 充分的中英雙語預訓練

  • 較低的部署門檻

    • FP16半精度下,需要至少13G的顯存進行推理,甚至可以進一步降低到10G(INT8)和6G(INT4)
  • 更長的序列長度 ChatGLM-6B 序列長度達2048;ChatGLM2-6B達8192;

  • 人類意圖對齊訓練 使用了監(jiān)督微調、反饋自助、人類反饋強化學習等方式

ChatGLM-6B本地部署

1.克隆ChatGLM2-6B

git clone https://github.com/THUDM/ChatGLM2-6B

2.CD進去之后,安裝依賴包

pip install -r requirements.txt 

它會安裝以下依賴:

protobuf
transformers==4.30.2
cpm_kernels
torch>=2.0
gradio
mdtex2html
sentencepiece
accelerate
sse-starlette

3.下載模型權重

有兩種方法,第一種就是利用transformers包去加載:

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
Downloading (…)enization_chatglm.py: 100%|████████████████████████████████████████████████████████████████████| 10.1k/10.1k [00:00<00:00, 1.61MB/s]
A new version of the following files was downloaded from https://huggingface.co/THUDM/chatglm2-6b:
- tokenization_chatglm.py
. Make sure to double-check they do not contain any added malicious code. To avoid downloading new versions of the code file, you can pin a revision.
Downloading tokenizer.model: 100%|████████████████████████████████████████████████████████████████████████████| 1.02M/1.02M [00:00<00:00, 2.22MB/s]
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device="cuda")
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:16<00:00,  2.41s/it]

由于博主已經下載過了,這里直接加載就好了,當然前提是你的顯存和內存足夠。

這樣模型就下載好了,下面我們來體驗以下:

model = model.eval()
# 傳入tokenizer, 消息 和 歷史
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
你好??!我是人工智能助手 ChatGLM2-6B,很高興見到你,歡迎問我任何問題。
response, history =  model.chat(tokenizer, "如何學習大模型?", history)
print(response)
大模型學習通常需要大量的計算資源和數(shù)據(jù)集,以及高超的技術和經驗。以下是一些學習大模型的步驟:

1. 選擇合適的大模型:選擇適合你應用領域的大模型,例如自然語言處理 (NLP) 中的 BERT、RoBERTa 等。

2. 準備數(shù)據(jù)集:獲取大量高質量的訓練數(shù)據(jù)集,這些數(shù)據(jù)集通常包括文本數(shù)據(jù)、圖像數(shù)據(jù)等。

3. 選擇訓練方式:選擇合適的訓練方式,例如數(shù)據(jù)增強、遷移學習等。

4. 搭建訓練環(huán)境:搭建一個適合大模型的訓練環(huán)境,包括分布式計算、數(shù)據(jù)增強等。

5. 訓練模型:使用訓練工具對模型進行訓練,常見的訓練工具包括 PyTorch、TensorFlow 等。

6. 評估模型:使用評估工具對模型的性能進行評估,常見的評估指標包括 accuracy、召回率、F1-score 等。

7. 部署模型:將訓練好的模型部署到生產環(huán)境中,以實時處理數(shù)據(jù)。

大模型學習需要大量的計算資源和數(shù)據(jù)集,以及高超的技術和經驗。因此,建議在實踐中根據(jù)自己的需求和能力選擇適合自己的大模型,并逐步提高自己的技術水平。

如果這種方式下載模型很慢的話,還可以從云盤直接下載模型權重。

首先需要下載模型代碼實現(xiàn):

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b

然后叢云盤中下載模型權重文件,放到本地目錄,比如是chatglm2-6b下。

接著將模型加載路徑替換成剛才這個本地目錄chatglm2-6b

tokenizer = AutoTokenizer.from_pretrained("chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("chatglm2-6b", trust_remote_code=True).cuda()

注意這里chatglm2-6b是保持下載好的權重的路徑,可以放在項目的根目錄下。

如果你手頭上有一臺Mac,那么可以參照以下方式部署(未驗證):

對于搭載了 Apple Silicon 或者 AMD GPU 的 Mac,可以使用 MPS 后端來在 GPU 上運行 ChatGLM2-6B。需要參考 Apple 的 官方說明 安裝 PyTorch-Nightly(正確的版本號應該是2.x.x.dev2023xxxx,而不是 2.x.x)。

目前在 MacOS 上只支持從本地加載模型。將代碼中的模型加載改為從本地加載,并使用 mps 后端:

model = AutoModel.from_pretrained("your local path", trust_remote_code=True).to('mps')

加載半精度的 ChatGLM2-6B 模型需要大概 13GB 內存。內存較小的機器(比如 16GB 內存的 MacBook Pro),在空余內存不足的情況下會使用硬盤上的虛擬內存,導致推理速度嚴重變慢。 此時可以使用量化后的模型 chatglm2-6b-int4。因為 GPU 上量化的 kernel 是使用 CUDA 編寫的,因此無法在 MacOS 上使用,只能使用 CPU 進行推理。 為了充分使用 CPU 并行,還需要單獨安裝 OpenMP。

在 Mac 上進行推理也可以使用 ChatGLM.cpp

以上內容來自官方文檔。

本地Web-Demo

除了通過代碼的方式去和ChatGLM交流,還可以通過本地web-demo來進行。

ChatGLM2-6B目錄下,執(zhí)行:

python web_demo.py

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

右下角有三個參數(shù),分別是max length, top p和temperature。

  • Max length 最大輸出長度
  • Top P nucleus采樣閾值[0,1]之間,給定這個閾值,它會從解碼器中挑選一個累計概率大于閾值的最小單詞集合,然后把該集合中單詞的概率重新進行歸一化,然后從中采樣。推薦0.7。
  • Temperature 采樣溫度[0,1]之間,越大回答多樣性越高,但如果想要結果一致性高一點,這個值要設小一點。它根據(jù) P ( x i ∣ x 1 : i ? 1 ) = exp ? ( u i / t ) ∑ j exp ? ( u j / t ) P(x_i|x_{1:i-1}) = \frac{\exp (u_i/t)}{\sum_j \exp(u_j/t)} P(xi?x1:i?1?)=j?exp(uj?/t)exp(ui?/t)?計算。

ChatGLM2-6B 量化部署

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

采用INT4量化,可以把顯存需求從13G降到了6G。

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

ChatGLM-6B 微調

利用新的數(shù)據(jù),對已經部署好的大模型進行繼續(xù)訓練就是微調。

首先我們看一下微調的好處

  • 增強模型通用性以及和人類對齊的能力
  • 使模型更加適用于專業(yè)化領域場景

大模型微調范式

第一種是Prompting,即輸入提示詞來引導模型適應下游任務。

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

這種方式的優(yōu)點是簡單,但缺點是成本高,難以達到最優(yōu)。可以從上圖看到,不同的提示詞得到的準確率相差較大,優(yōu)化效果不穩(wěn)定,需要不斷嘗試。

我們重點來看下更優(yōu)的方式??梢苑譃槿珔?shù)微調和高效參數(shù)微調。

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

假設全參數(shù)微調在13G顯存的參數(shù)上,模型本身就占用了13G顯存。此時在訓練時需要模型參數(shù)的四倍,加上原來的13G,因此大概需要60G內存或顯存。所以全量微調成本高,難以實現(xiàn)。

上圖右邊就是高效參數(shù)微調

  • Adapter 引入一小部分參數(shù)(額外可訓練層),只需要調整新加入的參數(shù),但同時會引入額外的推理開銷。
  • Prompt/Prefix tuning 效果更優(yōu),需要調參。
  • LoRA 依靠權重的低秩分解特點,沒有額外推理開銷。
  • 數(shù)據(jù)量少的話,全參數(shù)微調效果更好,不容易過擬合。

這里還沒有理解,需要進一步去了解。后續(xù)會繼續(xù)閱讀參考中的論文。

P-tuning V2原理

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

在輸入的向量序列前面拼上幾個不代表詞含義的向量,讓模型僅對前面這幾個向量進行優(yōu)化,凍結整個模型的其他60億(6B)參數(shù),這樣來實現(xiàn)高效參數(shù)的微調。

這種微調方式的成本只有全參數(shù)微調成本的0.1%-0.5%。

同時只需要保持和載入前面的PrefixEncoder,模型保持空間非常小。

下面我們來看如何進行這種高效微調, 在目錄ptuning下有:

total 104K
drwxrwxrwx 2 root root 4.0K Sep  6 22:25 .
drwxrwxrwx 8 root root 4.0K Sep  6 23:04 ..
-rw-rw-rw- 1 root root 8.3K Sep  6 22:25 arguments.py
-rw-rw-rw- 1 root root  489 Sep  6 22:25 deepspeed.json
-rw-rw-rw- 1 root root  768 Sep  6 22:25 ds_train_finetune.sh
-rw-rw-rw- 1 root root  603 Sep  6 22:25 evaluate_finetune.sh
-rw-rw-rw- 1 root root  702 Sep  6 22:25 evaluate.sh
-rw-rw-rw- 1 root root  18K Sep  6 22:25 main.py
-rw-rw-rw- 1 root root 9.4K Sep  6 22:25 README.md
-rw-rw-rw- 1 root root  823 Sep  6 22:25 train_chat.sh
-rw-rw-rw- 1 root root 3.1K Sep  6 22:25 trainer.py
-rw-rw-rw- 1 root root  12K Sep  6 22:25 trainer_seq2seq.py
-rw-rw-rw- 1 root root  833 Sep  6 22:25 train.sh
-rw-rw-rw- 1 root root 5.9K Sep  6 22:25 web_demo.py
-rw-rw-rw- 1 root root  219 Sep  6 22:25 web_demo.sh

其中 train.sh可以幫我們進行微調,而evaluate.sh可以驗證微調效果。

我們來看下train.sh的內容:

$ cat train.sh
PRE_SEQ_LEN=128
LR=2e-2
NUM_GPUS=1

torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py \
    --do_train \
    --train_file AdvertiseGen/train.json \ # 數(shù)據(jù)集位置
    --validation_file AdvertiseGen/dev.json \ # 驗證集
    --preprocessing_num_workers 10 \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path THUDM/chatglm2-6b \ # 可設為本地模型路徑
    --output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \ # 微調模型保存路徑
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 128 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --max_steps 3000 \ # 總訓練步數(shù)
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate $LR \ # 學習率
    --pre_seq_len $PRE_SEQ_LEN \ # Prompt長度,不設置時全參數(shù)微調
    --quantization_bit 4

其中通過以下設置:

quantization_bit=4 per_device_train_batch_size=1 gradient_accumulation_steps=16

可以實現(xiàn)INT4的模型參數(shù)被凍結,一次訓練迭代會以1的批處理大小進行16次累加的前后向傳播(就是計算了16次前向傳播后再進行反向傳播更新梯度,等同于16的批大小),此時最低只需要6.7G顯存。

全參數(shù)微調

如果你資源比較多,滿足

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

比如有4張A100顯卡。

那么可以通過ds_train_finetune.sh腳本進行全參數(shù)微調,需要安裝deepspeed進行多卡微調:

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

推理

推理通過運行腳本evaluate.sh

PRE_SEQ_LEN=128
CHECKPOINT=adgen-chatglm2-6b-pt-128-2e-2
STEP=3000
NUM_GPUS=1

torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py \
    --do_predict \
    --validation_file AdvertiseGen/dev.json \
    --test_file AdvertiseGen/dev.json \
    --overwrite_cache \
    --prompt_column content \
    --response_column summary \
    --model_name_or_path THUDM/chatglm2-6b \
    --ptuning_checkpoint ./output/$CHECKPOINT/checkpoint-$STEP \
    --output_dir ./output/$CHECKPOINT \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --per_device_eval_batch_size 1 \
    --predict_with_generate \
    --pre_seq_len $PRE_SEQ_LEN \
    --quantization_bit 4

微調結果

廣告生成

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

這是一個廣告文案生成的例子,我們輸入衣服的描述,微調前模型只是做了一些簡單的解釋,用summary中的例子去訓練,使得模型學會偏廣告風格的描述。

多輪對話數(shù)據(jù)集

ChatGLM2-6B 部署,大模型,ChatGLM2,大模型部署

在微調多輪對話數(shù)據(jù)時,可以提供聊天歷史,在訓練命令中指定 –history_column。

其實這里只給出了兩個微調實例的簡單說明,下篇文章我們來看下微調的完整過程是怎樣的。文章來源地址http://www.zghlxwxcb.cn/news/detail-698743.html

參考

  1. Prefix-Tuning: Optimizing Continuous Prompts for Generation
  2. P-Tuning: Prompt Tuning Can Be Comparable to Fine-tuning Across Scales and Tasks

到了這里,關于ChatGLM2-6B 部署的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • chatglm2-6b模型在9n-triton中部署并集成至langchain實踐 | 京東云技術團隊

    chatglm2-6b模型在9n-triton中部署并集成至langchain實踐 | 京東云技術團隊

    近期, ChatGLM-6B 的第二代版本ChatGLM2-6B已經正式發(fā)布,引入了如下新特性: ①. 基座模型升級,性能更強大,在中文C-Eval榜單中,以51.7分位列第6; ②. 支持8K-32k的上下文; ③. 推理性能提升了42%; ④. 對學術研究完全開放,允許申請商用授權。 目前大多數(shù)部署方案采用的是

    2024年02月12日
    瀏覽(25)
  • ChatGLM2-6B 部署

    ChatGLM2-6B 部署

    這是ChatGLM2-6B 部署的閱讀筆記,主要介紹了ChatGLM2-6B模型的部署和一些原理的簡單解釋。 它是單卡開源的對話模型。 充分的中英雙語預訓練 較低的部署門檻 FP16半精度下,需要至少13G的顯存進行推理,甚至可以進一步降低到10G(INT8)和6G(INT4) 更長的序列長度 ChatGLM-6B 序列長度達

    2024年02月09日
    瀏覽(27)
  • 【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署chatglm2-6b 開源中英雙語對話模型

    【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署chatglm2-6b 開源中英雙語對話模型

    項目地址 chatglm2-6b 下載模型 創(chuàng)建測試項目 創(chuàng)建虛擬環(huán)境安裝依賴 完整的venv環(huán)境 main.py 執(zhí)行 python進程cpu使用率100.3%持續(xù)了很長時間,沒有啟用多線程?

    2024年01月20日
    瀏覽(26)
  • ChatGLM2-6B下載與部署

    ChatGLM2-6B下載與部署

    我們首先來看一下 ChatGLM2-6B 模型的 requirements : 可以看到,要求 torch=2.0 ,這就產生了一個問題: torch 與 cuda 版本的匹配問題。本地機器中 CUDA=10.0 ,于是在費了半天時間配置好 ChatGLM2-6B 所需環(huán)境,從 github 和 huggingface 下載好了 ChatGLM2-6B 模型,但是在 run 的過程中報錯 Torch

    2024年02月06日
    瀏覽(28)
  • ChatGLM2-6B、ChatGLM-6B 模型介紹及訓練自己數(shù)據(jù)集實戰(zhàn)

    ChatGLM2-6B、ChatGLM-6B 模型介紹及訓練自己數(shù)據(jù)集實戰(zhàn)

    介紹 ChatGLM-6B是開源的文本生成式對話模型,基于General Language Model(GLM)框架,具有62億參數(shù),結合模型蒸餾技術,實測在2080ti顯卡訓練中上(INT4)顯存占用 6G 左右, 優(yōu)點 :1.較低的部署門檻: FP16 半精度下,ChatGLM-6B 需要至少 13GB 的顯存進行推理,結合模型量化技術,一需求可以進一步

    2024年02月12日
    瀏覽(25)
  • 阿里云部署 ChatGLM2-6B 與 langchain+ChatGLM

    阿里云部署 ChatGLM2-6B 與 langchain+ChatGLM

    更新系統(tǒng) 安裝git 克隆 ChatGLM2-6B 源碼 克隆 chatglm2-6b 模型 安裝 ChatGLM2-6B 依賴 修改模型的路徑 修改成 啟動服務 啟動成功后 克隆 langchain-ChatGLM 源碼 git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git 克隆模型 安裝 langchain-ChatGLM 依賴 修改配置 修改一 修改成 修改二 修改成 修改

    2024年02月15日
    瀏覽(33)
  • 第五篇-ChatGLM2-6B模型下載

    可以使用如下代碼下載 創(chuàng)建下載環(huán)境 編寫代碼 down_glm2.py snapshot_download其他參數(shù) 只允許下載部分類型的文件(以JSON為例) allow_patterns=‘*.json’, 不允許下載部分類型的文件(以JSON為例) ignore_patterns=[‘*.json’] 執(zhí)行下 第一篇-ChatGLM-webui-Windows安裝部署-CPU版 第二篇-二手工作站

    2024年02月14日
    瀏覽(60)
  • 三個開源大模型(chatglm2-6B, moss, llama)-chatglm2的測試

    chatglm2-6B 是清華大學開源的一款支持中英雙語的對話語言模型。經過了 1.4T 中英標識符的預訓練與人類偏好對齊訓練,具有62 億參數(shù)的 ChatGLM2-6B 已經能生成相當符合人類偏好的回答。結合模型量化技術,用戶可以在消費級的顯卡上進行本地部署(INT4 量化級別下最低只需 6G

    2024年02月11日
    瀏覽(42)
  • ChatGLM2-6B 大語言模型本地搭建

    ChatGLM2-6B 大語言模型本地搭建

    ChatGLM2-6B 是清華 NLP 團隊于不久前發(fā)布的中英雙語對話模型,它具備了強大的問答和對話功能。擁有最大32K上下文,并且在授權后可免費商用! ChatGLM2-6B的6B代表了訓練參數(shù)量為60億,同時運用了模型量化技術,意味著用戶可以在消費級的顯卡上進行本地部署(INT4 量化級別下

    2024年01月21日
    瀏覽(47)
  • ChatGLM2-6B模型推理流程和模型架構詳解

    ChatGLM2-6B模型推理流程和模型架構詳解

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 因為本人在做大模型優(yōu)化方面的研究,之前拆了ChatGLM2的源代碼,看看能從哪些地方深入。結果剛拆完沒多久,昨天,也就是10 月 27 日,智譜 AI 在 2023 中國計算機大會(CNCC)上發(fā)布了自研第三代對話大模

    2024年02月03日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包