😺
LLMのモデルの形式(transformer周り)
重みを保存するモデルに関して
Torchモデル
lua向けのライブラリ。
「.t7」という拡張子ファイル。
Pytorchモデル
Python向けのライブラリ。
.ptや.pthという拡張子ファイル。(「.t7」とはモデル構造が違う)
PyTorch modelはtorch.nn.Moduleのサブクラスだと思って良い。
モデルのロード
load_model = torch.load('〇〇.pt')
TorchScript形式
PyTorch modelの中間表現。高性能な環境(例えばC++)で実行できるようにしている。
拡張子は.pt
pytorchモデルからの変換
script_model = torch.jit.script(model)
pytorchモデルからの変換
script_model = torch.jit.trace(model, example_inputs=dummy_input)
ロード時
load_model = torch.jit.load("torchScriptのファイルパス")
Hugging Face モデル
ベースモデルが、PreTrainedModel,
- nn.Moduleを継承しているのでPythorchモデルとも言える。
- モデルの読み込みと保存に関する共通のメソッドを実装
(注意 ベースが、TFPreTrainedModel (TensorFlowベース) FlaxPreTrainedModel (Flaxベース)もある。https://huggingface.co/docs/transformers/ja/main_classes/model)
vLLMで利用する。
サポートしてるモデル一覧
pip install vllm
⭐️自身の環境ではopenaiのバージョンアップも必要だった。
llama2を動作させるサンプル例
import os
from vllm import LLM, SamplingParams
LOCAL_PATH = "/Path/llama2/7b"
model_dir = os.path.expanduser(LOCAL_PATH)
vllm_model = LLM(model=model_dir)
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
prompts = ["初めまして、こんにちは"]
# Generate text using the specified model and parameters in vLLM
outputs = vllm_model.generate(prompts, sampling_params)
# Print the outputs.
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
上記のmodelはvllmが対応しているHFモデルです。
ONNXモデル
ONNX(Open Neural Network eXchange)(オニキス)フォーマットで作られたモデルのこと。
上記のように計算グラフの形で情報を保持している。
推論方法
ONNX Runtimeで推論する。
ONNX Runtimeに関して。
pip install onnxruntime-gpu
- ONNXのオペレーターにはバージョン番号(opset number)が付いている。
opset_version
モデルの視覚化
Netronで視覚化できる。
huggingface/optimum(未検証)
transformes -> onnx形式変換
pip install optimum[exporters]
text-generationタスクの場合
!optimum-cli export onnx --task text-generation --model <model_path> <output_dir>
ONNXモデルのダウンロード
ONNX Model Zooにモデルが置かれている。
ONNX Model Hubを利用してダウンロードすることができる。
from onnx import hub
ONNXファイルのあれこれ
-
Constant_<ID>_attr__value
モデルの計算グラフ内で使われる定数値を保持するための部分 -
onnx__MatMul_<ID>
行列の掛け算を行う演算ノードを保持するための部分。
Discussion