この記事では、Google Colabを使用して、Huggingfaceのモデル(今回は「DeepSeek-R1日本語モデル」)をGGUF(Google Generalized Unified Format)形式に変換する方法を説明します。これにより、モデルの効率的な利用やインターフェースの統一が可能になります。
必要なライブラリのインストール
まず、Huggingface Hubのライブラリをインストールします。このライブラリは、Huggingfaceのリポジトリからモデルをダウンロードするために必要です。
!pip install huggingface_hub
Huggingfaceからモデルをダウンロード
次に、huggingface_hub
を使用して、特定のモデル(ここでは「DeepSeek-R1-Distill-Qwen-14B-Japanese」)をローカルにダウンロードします。snapshot_download
関数を使用して、モデルを指定のローカルディレクトリに保存します。
from huggingface_hub import snapshot_download
model_id = "cyberagent/DeepSeek-R1-Distill-Qwen-14B-Japanese"
snapshot_download(repo_id=model_id, local_dir="DeepSeek-R1-Distill-Qwen-14B-Japanese",
local_dir_use_symlinks=False, revision="main")
ここでは、repo_id
としてHuggingface上のモデルIDを指定し、local_dir
に保存先ディレクトリを指定します。revision="main"
は、モデルの最新の安定版を指定します。
llama.cppをクローン
GGUF形式に変換するためには、llama.cpp
リポジトリをクローンして、変換スクリプトを実行する必要があります。git clone
コマンドでこのリポジトリをダウンロードします。
!git clone https://github.com/ggerganov/llama.cpp.git
モデルをGGUF形式に変換
llama.cpp
リポジトリ内の変換スクリプトを使用して、ダウンロードしたHuggingfaceのモデルをGGUF形式に変換します。変換コマンドは以下の通りです。
!python llama.cpp/convert_hf_to_gguf.py DeepSeek-R1-Distill-Qwen-14B-Japanese \
--outfile DeepSeek-R1-Distill-Qwen-14B-Japanese.gguf \
--outtype q8_0
ここで重要なのは、--outfile
オプションで出力ファイル名を指定することです。--outtype q8_0
オプションは、出力形式を指定します。q8_0
は8ビットの量子化を意味しており、モデルのサイズを小さくするために使用されます。
これが成功するとDeepSeek-R1-Distill-Qwen-14B-Japanese.gguf
が生成されます。
この操作だけであれば、GPUを使わなくてもCPUで可能です。
ファイルが大きくなるので、ローカルで変換作業は行ったほうがよいかもしれません。
すでにGGUFに変換してくださっている方もいるので、自分でやりたい場合以外はこちらを使うのがよさそうです。
これらを読み込んで使う方法については以下の記事で紹介しています。