私の CSDN へようこそ: https://spike.blog.csdn.net/
この記事のアドレス: https://blog.csdn.net/caroline_wendy/article/details/131104546
論文:GLM: General Language Model Pretraining with Autoregressive Blank Infilling
ChatGLM は、自己回帰的空白埋め法 (Autoregressive Blank Infilling) に基づいた一般的な事前トレーニング言語モデル (General Language Pretraining Model) であり、3 つの主流の事前トレーニング フレームワークと互換性があります: 自己回帰モデル (GPT など)、自己エンコーディング モデル (BERT など) とエンコーダー/デコーダー モデル (T5 など)。GLM は、2 次元の位置エンコーディングを追加し、テキストの断片を任意の順序で予測できるようにすることで、ギャップフィルの事前トレーニングを改善します。同時に、GLM はスペースの数と長さを調整することで、自然言語の理解、条件付きおよび無条件のテキスト生成など、さまざまな種類のタスクに適応できます。GLM は、複数のタスクにおいて BERT、T5、GPT よりも優れたパフォーマンスを発揮し、その多用途性とパワーを実証します。
ChatGLM はバージョン 2.0 ChatGLM2-6B にアップグレードされました。関連記事:
- ChatGLM v1.0: ChatGLM-6B (一般言語モデル) のプロジェクト構成
- ChatGLM v2.0: ChatGLM2-6B (一般言語モデル) の第 2 バージョンのプロジェクト構成
1. 設定プロジェクト
- GitHub プロジェクト: GitHub - THUDM/ChatGLM-6B
- HuggingFace Web ページ: https://huggingface.co/THUDM/chatglm-6b
HuggingFace プロジェクトをダウンロードする場合chatglm-6b
、git-lfs
関連する大きなファイルはダウンロードされません。コマンドは次のとおりです。
git clone https://huggingface.co/THUDM/chatglm-6b
ダウンロード パラメーター プロジェクトは、THU-Cloud-Downloader
清華クラウドのモデル パラメーターを迅速にダウンロードするために使用されます。コマンドは次のとおりです。
git clone https://github.com/chenyifanthu/THU-Cloud-Downloader
モデルパラメータアドレス: https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/
モデル パラメーターを直接保存してchatglm-6b
既存のファイルを置き換えます。コマンドは次のとおりです。
cd THU-Cloud-Downloader
python main.py --link https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/ --save ../chatglm-6b/
8 つのモデル ファイルを含む 11 個のファイルがダウンロードされるまで待ちます。ダウンロードには約 15 分かかることが予想されます。
ダウンロードサービスプロジェクト:
git clone [email protected]:THUDM/ChatGLM-6B.git ChatGLM-6B-official
ダウンロードには git を使用し、事前に設定することをお勧めします
id_rsa
。ダウンロードが遅すぎる場合は、zip ファイルを直接ダウンロードし、アップロード後に解凍することができます。
conda 環境を構成し、関連する Python パッケージをインストールします。コマンドは次のとおりです。
conda create -n chatglm python=3.8
conda activate chatglm
cd ChatGLM-6B-official
pip install -r requirements.txt
PyTorch が正常にインストールされていることを確認します。
python
import torch
print(torch.__version__) # 2.0.1+cu117
print(torch.cuda.is_available()) # True
2. サーバー側のテスト
cli_demo.py
ソース コード内のモデルをダウンロードしたパスに変更しますchatglm-6b
。
...
tokenizer = AutoTokenizer.from_pretrained("../chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("../chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()
...
走る:
python3 cli_demo.py
次のようにダイアログをテストします。
欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序
用户:蒙特卡洛方法是什么呢?
ChatGLM-6B:蒙特卡洛方法是一种随机模拟方法,常用于研究随机现象和不确定性原理。在蒙特卡洛方法中,研究者使用随机数生成器生成一组随机样本,然后根据这些样本计算出一些物理量或数学模型的结果。
具体来说,蒙特卡洛方法的基本思想是通过模拟随机过程来估计估计物理量或数学模型的参数。在模拟过程中,研究者随机选择一个物理量或数学模型的参数,然后计算出一组模拟结果。这些模拟结果可以用于估计真实的物理量或数学模型的结果,并给出相应的误差。
蒙特卡洛方法的优点在于可以处理不确定性原理,例如在研究量子物理、化学反应、金融市场等领域中,由于存在大量随机因素,不确定性原理会导致结果的不准确性。而蒙特卡洛方法可以通过模拟大量的随机样本来消除不确定性,提高结果的准确性。
用户:
3. Web ページの呼び出し
web_demo.py
ソース コード内のモデルをダウンロードしたパスに変更しますchatglm-6b
。
...
tokenizer = AutoTokenizer.from_pretrained("../chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("../chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()
...
ポート透過伝送用に Gradio プラグインのサーバー IP アドレス (server_name)
およびポート番号 ( ) を変更します:server_port
...
demo.queue().launch(share=False, server_name='[Your Server IP]', server_port=[Your Server Port], inbrowser=True)
...
IP は 0.0.0.0 に設定でき、ポートは使用可能なポートに設定できます。
参考:Gradioをベースにした機械学習アプリケーションのビジュアル展開
走る:
CUDA_VISIBLE_DEVICES="1" nohup python3 web_demo.py > nohup.out &
アクセスアドレスは以下の通りです。http://[Your Server IP]:[Your Server Port]
バグ修正
1. ピアによる TCP 接続のリセット
HuggingFace プロジェクトをダウンロードするときに、次のエラーが発生しました。
fatal: unable to access 'https://huggingface.co/THUDM/chatglm-6b/': TCP connection reset by peer
ssh + git
ネットワーク上の理由、または Git のバージョンが低いことが原因である可能性があります。アクセス例外を避けるために、ダウンロードにはパスを使用することをお勧めします。
2. id_rsa の権限 0644 がオープンすぎる
.id_rsa
の権限を次のように変更します。
chmod 400 ~/.ssh/id_rsa
参考:Stackoverflow - SSH キー: 「'id_rsa.pub' の権限 0644 がオープンすぎます。」マック上で
3. Docker環境のpipインストールソースを変更する
デフォルトの pip ソースの優先順位は次のとおりです。
# This file has been autogenerated or modified by NVIDIA PyIndex.
# In case you need to modify your PIP configuration, please be aware that
# some configuration files may have a priority order. Here are the following
# files that may exists in your machine by order of priority:
#
# [Priority 1] Site level configuration files
# 1. `/opt/conda/pip.conf`
#
# [Priority 2] User level configuration files
# 1. `/root/.config/pip/pip.conf`
# 2. `/root/.pip/pip.conf`
#
# [Priority 3] Global level configuration files
# 1. `/etc/pip.conf`
# 2. `/etc/xdg/pip/pip.conf`
すべて削除して だけを保持するには/root/.pip/pip.conf
、次の操作を実行できます。
rm /opt/conda/pip.conf
rm /root/.config/pip/pip.conf
rm /etc/pip.conf
rm /etc/xdg/pip/pip.conf
pip.conf
Nvidia の pip ソースと共有されている Tsinghua の pip ソースを変更して追加します。
vim ~/.pop/pip.conf
[global]
no-cache-dir = true
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
extra-index-url = https://pypi.ngc.nvidia.com
trusted-host = pypi.tuna.tsinghua.edu.cn pypi.ngc.nvidia.com