見出し画像

GoogleColabでHuggingFaceのモデルをGGUFフォーマットに変換🔄/大塚

以下のチュートリアルを参考に、Google ColabでHugging FaceモデルのGGUFフォーマット変換に挑戦します!

ColabのGPUはL4を選択して実行しましたが、CPUだけでもいけるかもしれません。

モデルのダウンロード

huggingface_hubライブラリをインストールします。

!pip install huggingface_hub

Hugging Faceからモデルをダウンロードします。
model_idにダウンロードしたいモデル名を入力してください。
local_dirには保存先を指定します。

from huggingface_hub import snapshot_download
model_id="4piken/Llama-3-Gozaru-8B-Instruct"
snapshot_download(repo_id=model_id, local_dir="Llama-3-Gozaru-8B-Instruct",
                  local_dir_use_symlinks=False, revision="main")

「HF_TOKEN」が必要とのエラーが出た場合、Google Colab左側メニューの鍵アイコンをクリックして、「HF_TOKEN」という名前を入力し、自分のHugging FaceページからAccess Tokenを発行し、コピペします。

画像

念のため、モデルが指定した場所にダウンロードされたかどうかの確認をします。

!ls -lash Llama-3-Gozaru-8B-Instruct

モデルを変換する

llama.cppをクローンします。

!git clone https://github.com/ggerganov/llama.cpp.git

依存関係をインストールします。
現時点のColabのPythonのバージョンに合わせて、モジュールのバージョンも書き換えています。
「セッションを再起動する」と出てきたら、そのまま従います。

!sed -i -e "1c numpy==1.25.0" llama.cpp/requirements/requirements-convert-legacy-llama.txt
!sed -i -e "5c protobuf==3.20.3" llama.cpp/requirements/requirements-convert-legacy-llama.txt
!sed -i -e "2c torch==2.3.0" llama.cpp/requirements/requirements-convert-hf-to-gguf.txt
!sed -i -e "2c torch==2.3.0" llama.cpp/requirements/requirements-convert-hf-to-gguf-update.txt

!pip install -r llama.cpp/requirements.txt

変換用のスクリプトが問題なく読み込まれるかチェックします。

!python llama.cpp/convert.py -h

変換スクリプトを実行します。

!python llama.cpp/convert-hf-to-gguf.py Llama-3-Gozaru-8B-Instruct \
  --outfile Llama-3-Gozaru-8B-Instruct.gguf \
  --outtype q8_0

作成したモデルの確認

!ls -lash Llama-3-Gozaru-8B-Instruct.gguf

変換したモデルを試してみる

llama-cpp-pythonをインストールします。

!pip install llama-cpp-python

usr_promptにプロンプトを入力して推論します。

from llama_cpp import Llama

model_path = '/content/Llama-3-Gozaru-8B-Instruct.gguf'

# モデルのロード
llm = Llama(model_path=model_path)

# 推論の実行
usr_prompt = "犬に仏の性質はあるのでしょうか?"
result = llm(f"<|start_header_id|>system<|end_header_id|>必ず日本語で回答してください。<|eot_id|><|start_header_id|>user<|end_header_id|>{usr_prompt}<|eot_id|><|start_header_id|>assistant<|end_header_id|>", max_tokens=128)
print(result["choices"][0]["text"])

次のような出力が返ってきました!うまく動いているようですね。

我、りんえもんは思う。 犬には仏の性質が含まれていますでござる。 仏は、自他を超越し、我々全員が同一体であるということを悟りますでござる。 また、仏

Hugging Faceにモデルをアップロードする

変換したggufファイルをHugging Faceにアップします。

from huggingface_hub import HfApi
api = HfApi()

model_id = "あなたのHugging FaceアカウントのUsername/Hugging Faceでの管理名.gguf"
api.create_repo(model_id, exist_ok=True, repo_type="model")
api.upload_file(
    path_or_fileobj="/content/Llama-3-Gozaru-8B-Instruct.gguf",
    path_in_repo="Hugging Faceでの管理名.gguf",
    repo_id=model_id,
)

次回は4bit量子化に挑みます💪



いいなと思ったら応援しよう!

ピックアップされています

注目note☆

  • 26,941本

コメント

ログイン または 会員登録 するとコメントできます。
GoogleColabでHuggingFaceのモデルをGGUFフォーマットに変換🔄/大塚|しぴ研
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1