## 背景 ハマヒヨちゃんに使っているLLMがGPT-2で古すぎるので、新しいLLM使いたい。 ただ、サーバーがメモリ2GBのポンコツなので、色々量子化とか試して動かしたい。 まず普通にファインチューニング自体はColabでやるので、推論自体ができるかどうかを試したい。 ## 方法 [Llama-3-Swallow: 日本語に強い継続事前学習モデル](https://zenn.dev/tokyotech_lm/articles/f65989d76baf2c) これを動かしたい。 動かし方載ってないな。 [WSL2でLlama-3 Swallowを試してみる|noguchi-shoji](https://note.com/ngc_shj/n/nd02e29c0e53c) ここを参考に動かすか。 いやllama.cpp使うんだった。 [非力なパソコンでもLLMを動かしたい!? llama.cppの紹介 | CyberAgent Developers Blog](https://developers.cyberagent.co.jp/blog/archives/45308/) ```bash sudo apt -y update sudo apt -y install build-essential gcc g++ make pkg-config libopenblas-dev python3-pip # llama.cppのダウンロード mkdir llama.cpp && curl -L https://github.com/ggerganov/llama.cpp/archive/refs/tags/b1620.tar.gz | tar zx -C llama.cpp --strip-components=1 cd ~/llama.cpp # ビルド make -j 4 LLAMA_OPENBLAS=1 # テストもしておきます make test LLAMA_OPENBLAS=1 pip3 install -r requirements-hf-to-gguf.txt ``` なんかtriton\==2.1.0がインストールできない。なぜ? まぁわからんけど、requirements.txtに書いてあったやつを手でインストールした。 ## WSL2に入れることにした ポンコツサーバーじゃLlama3は動かない。メモリが足りなすぎる。メモリが16GBあるデスクトップで動かしてみる。 ```bash sudo apt update sudo apt install build-essential cmake pip install llama-cpp-python ``` ```bash wget https://huggingface.co/mradermacher/Llama-3.1-Swallow-8B-v0.1-i1-GGUF/resolve/main/Llama-3.1-Swallow-8B-v0.1.i1-Q4_K_S.gguf ``` ```python from llama_cpp import Llama llm = Llama(model_path="./path/to/model") out = llm("ひよたんは") print(out) ``` これで一応動いたわ。後は、元のLlama3.1のやつをGGUF形式にする方法を調べて、それができたらColabでtrainするだけ。 ```bash python -c 'import huggingface_hub; huggingface_hub.snapshot_download(repo_id="<model_name>", cache_dir="/path/to/modeldir")' ``` めちゃ時間かかる。 ## Llama3.1をファインチューニング なぜかトーカナイザーがNoneを吐くことがある。 sep_token_idが定義されてないだけだった。 なんか普通にVRAMが足りないわ。Unslothっていうやつを使うとメモリが削減できるらしい。 Unsloth入れたらできた。