検索
連載

生成AIサービスに個人情報をアップロードしたくない!! Windowsローカルで大規模言語モデル(LLM)を利用するTech TIPS

ChatGPTやMicrosoft Copilotなどの生成AIサービスが便利なのは分かるが、いざ使おうと思うと「情報漏えいなどが心配」と感じていないだろうか。そんな心配がある場合、手元のWindows 10/11上でLLM(大規模言語モデル)を実行すればよい。無料な上に意外なほど簡単にLLMが実行でき、住所や名前を分割するなどのテキスト処理ができる。本Tech TIPSでは、Windows 10/11上でLLMを実行する手順を紹介しよう。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Tech TIPS」のインデックス

連載目次

対象:Ollama+Llama-3-ELYZA-JP-8B(Windows 10/11)


Windows上でLLMを実行する
Windows上でLLMを実行する
生成AI(人工知能)サービスを利用すれば、名前を「姓」と「名」に分離するなど、これまで面倒だった作業が簡単にできる。しかし、顧客情報などを処理するには、サービスへのアップロードによる情報漏えいが心配だ。そんな場合は、Windows 10/11上でLLM(大規模言語モデル)を実行し、そこで顧客情報などを処理すればいい。無料な上に意外なほど簡単にLLMが実行可能だ。その手順を紹介しよう。

 ChatGPTやMicrosoft Copilot、PerplexityなどのLLM(大規模言語モデル)/生成AIサービスを利用することで、これまで面倒だった名前を「姓」と「名」に分離するなどが簡単にできるようになった(Tech TIPS「【Excel】一筋縄ではいかない『姓』と『名』を自動で分離する方法」参照)。

 しかし、こうした生成AIサービスは、SaaS(Software as a Service)で提供されているため、入力データがインターネット上のどこかのサイトにアップロードされることは避けられず、どうしても情報漏えいなどのセキュリティ面で不安がある。

Microsoft Copilotで名前の分割はできるけど……(1)
Microsoft Copilotで名前の分割はできるけど……(1)
Windows 11では標準機能の「Microsoft Copilot」を使えば、名前の「姓」と「名」の分割なども可能だ。画面中のデータは、「テストデータ・ジェネレータ」を使って生成したダミーデータ。
Microsoft Copilotで名前の分割はできるけど……(2)
Microsoft Copilotで名前の分割はできるけど……(2)
個人情報をインターネット上のサイトへアップロードして処理するのは、学習に利用されてしまう可能性があるなど心配だ。

 「姓」と「名」の分割といったテキストの加工であれば、生成AIサービスではなくLLMでも処理できる。最近では、性能や容量が限られるPCでも動作する軽量なLLMをさまざまなベンダーが開発しており、日本語を強化したものもある。こうしたLLMを手元のWindows 10/11上で実行させる「ローカルLLM」であれば、情報漏えいや利用コストを気にしなくても済む。

 そこで、本Tech TIPSでは、Windows 10/11上でローカルLLMを実行する方法を紹介する。ここでは、Metaがオープンソースとして提供しているLLM「Llama 3」をベースに、ELYZAが日本語で追加学習した「Llama-3-ELYZA-JP-8B」というLLMを取り上げる。「Llama-3-ELYZA-JP-8B」は、「Llama 3ライセンス」で提供されており、月間ユーザーが7億人を超えない限り、無料で商用利用も可能だ。

ローカルLLMを動かすために「Ollama」をインストールする

 Windows 10/11上でLLMを実行するためには、ローカルLLMの実行ツール(推論フレームワーク)である「Ollama」をインストールする。OllamaはMIT Licenseで無料で利用可能だ。

 Webブラウザで以下のURLを開き、[Download for Windows]ボタンをクリックする。インストーラーの「OllamaSetup.exe」がダウンロードできるので、これを実行して、Ollamaをインストールする。

Ollamaをインストールする(1)
Ollamaをインストールする(1)
WebブラウザでOllamaのダウンロードページを開き、[Windows]アイコンをクリック、[Download for Windows]ボタンをクリックする。Ollamaのインストーラー「OllamaSetup.exe」がダウンロードできる。
Ollamaをインストールする(2)
Ollamaをインストールする(2)
OllamaSetup.exeを実行すると、インストーラーが起動する。[Install]ボタンをクリックすると、Ollamaがインストールできる。

 Ollamaのインストールが完了したら、Windowsターミナルを起動し、以下のコマンドラインを実行してみる。バージョンが表示されたら、Ollamaがインストールできている。

ollama --version


Ollamaがインストールできているかどうかを確認するコマンド

Ollamaのバージョンを確認する
Ollamaのバージョンを確認する
「--version」オプションを付けて「ollama」コマンドを実行すると、インストールしたOllamaのバージョンが確認できる。

OllamaでELYZAのLLMを実行してみる

 Ollamaがインストールできたら、ELYZAのLLM「Llama-3-ELYZA-JP-8B」を実行してみよう。Llama-3-ELYZA-JP-8Bは、Ollamaで実行可能な量子化済みのGGUFファイルが機械学習プラットフォーム「Hugging Face」で提供されているため、Windowsターミナルで以下のコマンドラインを実行するだけでよい。

ollama run hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF


OllamaでLLM「Llama-3-ELYZA-JP-8B」を実行するコマンド

 初回のみGGUFファイル「Llama-3-ELYZA-JP-8B-GGUF」のダウンロードやモデルの読み込みなどに時間がかかるが、2回目以降はすぐにプロンプトの入力が可能になる。なお、Llama-3-ELYZA-JP-8B-GGUFの読み込みでエラーが発生した場合は、再度、上記のコマンドを実行すれば、続きから作業が実行される。

 「>>> Sent a message」と表示されたら、プロンプトが入力可能だ。

OllamaでLLM「Llama-3-ELYZA-JP-8B」を実行する
OllamaでLLM「Llama-3-ELYZA-JP-8B」を実行する
Llama-3-ELYZA-JP-8Bは、Ollamaで実行可能な量子化済みのGGUFファイルが機械学習プラットフォーム「Hugging Face」で提供されているため、Windowsターミナルで上記のコマンドを実行すれば起動できる。場合によっては、画面のようにエラーで止まってしまうことがあるが、再度、同じコマンドを実行すれば続きの処理から実行される。

GGUFファイルをダウンロードしてOllamaにモデルを読み込ませる方法

 このようにOllamaでLlama-3-ELYZA-JP-8Bを直接実行できる。その一方で、Llama-3-ELYZA-JP-8B-GGUFを別途ダウンロードしてOllamaに登録することで、オフライン(インターネット未接続)でLlama-3-ELYZA-JP-8Bを実行させることも可能だ。

 インターネットに接続しているPCのWebブラウザでHugging Faceの「elyza/Llama-3-ELYZA-JP-8B-GGUF」ページを開いたら、[Files and versions]タブを開く。

 ダウンロード可能なファイルの一覧が表示されるので、「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」の右側にある[ダウンロード]アイコンをクリックする。ファイルサイズが約4.6GBあるので、ストレージ容量やダウンロード時間に気を付けてほしい。

GGUFファイルをダウンロードする(1)
GGUFファイルをダウンロードする(1)
WebブラウザでHugging Faceの「elyza/Llama-3-ELYZA-JP-8B-GGUF」ページを開き、[Files]タブ([Files and versions]タブになっていることもある)を開く。
GGUFファイルをダウンロードする(2)
GGUFファイルをダウンロードする(2)
ダウンロード可能なファイルの一覧が表示されるので、「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」の右側にある[ダウンロード]アイコンをクリックする。

 「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」がダウンロードできたら、Ollamaを実行するPCの[C:\Elyza]フォルダなど適当なフォルダにコピーしておく。このフォルダ内に次の2つのテキストファイルをメモ帳などで作成する。

  • TEMPLATE:モデルに渡すプロンプトの形式を定義する
  • Modelfile:「TEMPLATE」ファイルと「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」がどこにあるかを示す

{{ if .System }}<|start_header_id|>system<|end_header_id|>

{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

{{ .Response }}<|eot_id|>


「TEMPLATE」ファイルの中身

FROM <フォルダ名>/Llama-3-ELYZA-JP-8B-q4_k_m.gguf
TEMPLATE """
{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>
"""


「Modelfile」ファイルの中身

 この2つのファイルは必ず「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」を移動したフォルダ内に作成すること。

 上記ファイルを用意したら、Windowsターミナルを起動し、カレントフォルダを「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」のあるフォルダに移動し、以下のコマンドラインを実行して、Ollamaに「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」を登録する。ここでは、「Elyza」という名前で登録しているが、名前は自分の分かりやすいものを付ければよい。

ollama create Elyza -f Modelfile


Modelfileに定義されたモデルをOllamaに登録するコマンドライン

Ollamaにモデルファイルを読み込ませる
Ollamaにモデルファイルを読み込ませる
OllamaにElyzaという名前で「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」を登録する。

 Ollamaに「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」を登録したら、以下のコマンドラインを実行して、登録されているモデルを確認しよう。

ollama list


Ollamaに登録されているモデルを確認するコマンドライン

登録されたモデルの一覧を表示する
登録されたモデルの一覧を表示する
「ollama list」コマンドを実行すると、Ollamaに登録されているモデルの一覧が表示される。

 「NAME」欄に「Elyza」が表示されたら正しく登録できているので、以下のコマンドラインを実行して、「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」を実行しよう。

ollama run Elyza


Ollamaで「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」を実行するコマンドライン

 「>>> Sent a message」と表示されたら、プロンプトが入力可能だ。

Ollamaで「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」を実行する
Ollamaで「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」を実行する
「ollama run Elyza」でLlama-3-ELYZA-JP-8B-q4_k_m.ggufを実行できる。「>>>」が表示されたら、プロンプトの入力が可能だ。

ローカルLLMを試してみる

 準備ができたところで、実際にプロンプトを入力してみよう。複数行を入力したい場合は、["](ダブルクオート)キーを3回入力してから[Enter]キーを押す。入力を促す記号が「>>>」から「...」に変わるはずだ。

 ここで例えば、「以下の名前を『姓』と『名』に分離し、『姓 名』の形式で出力してください」と入力し、以下に「織田信長」のような「姓」と「名」に区切り(スペースなど)がない名前の一覧をMicrosoft Excelなどからコピーして貼り付ける。再び["]キーを3回入力すると、プロンプトが入力され、「Llama-3-ELYZA-JP-8B」による処理が実行される。

 しばらくすると、「姓 名」の形式で名前が出力されるはずだ。Ollamaから抜けて、PowerShellやコマンドプロンプトに戻るには、[Ctrl]+[D]キーを押せばよい。処理はローカルのPCで実行されるので、Windows 10/11を機内モードにしていても構わない。

Windows上のLLMで名前分割の処理を実行してみた(1)
Windows上のLLMで名前分割の処理を実行してみた(1)
「Elyza」と名付けたLLM「Llama-3-ELYZA-JP-8B」を実行し、名前を「姓」と「名」に分割する処理を実行してみた。ローカルのWindows 11上だけで処理が完結できるため、「機内モード」にしてネットワーク接続を切った状態でも処理できる。
Windows上のLLMで名前分割の処理を実行してみた(2)
Windows上のLLMで名前分割の処理を実行してみた(2)
「姓 名」という形式で出力された。

 「Llama-3-ELYZA-JP-8B」は、2023年12月31日までの情報に基づいて回答するため、最新のニュースなどに対しては正しく回答できないことがあるので注意してほしい。例えば、「次期アメリカ大統領は誰?」という質問への回答は、下画面のようなものだった。

次期アメリカ大統領について聞いてみた
次期アメリカ大統領について聞いてみた
「Llama-3-ELYZA-JP-8B」は、2023年12月31日までの情報しか保持していないため、次期アメリカ大統領について聞いても正しい答えは得られない。

 住所から郵便番号を調べる、住所を「都道府県」「市区町村」「それ以下」に分割する、といった処理は得意なようだ。ただし、入力するデータが多いと、途中で処理が止まってしまったり、続きを出力するか聞かれたりすることもあるようなので、その場合はプロンプトを工夫してほしい。

モデルやOllamaをアンインストールする

 ストレージ容量が足りなくなったなどの理由で、Ollamaに作成したモデルを削除したいような場合、Windowsターミナルを起動し、以下のコマンドラインを実行すればよい。

ollama rm <作成したモデル名>


Ollama上のモデルを削除するコマンドライン

OllamaからELYZAを削除する
OllamaからELYZAを削除する
「ollama rm Elyza」コマンドで、「Elyza」という名前のモデルをOllamaから削除できる。

 また、Ollama自体をアンインストールしたい場合は、通常のアプリケーションと同様、[設定]アプリを起動し、[アプリ]−[インストールされているアプリ]で、「Ollama」で検索、見つかった「Ollama」の右側にある[…]アイコンをクリックして、[アンイストール]を選択すればよい。Ollamaに登録したモデルごと削除できる。

Ollamaをアンインストールする
Ollamaをアンインストールする
Ollamaは、通常のアプリケーションと同様、「設定」アプリの[アプリ]−[インストールされているアプリ]でアンインストールできる。

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る