独立GPU(dGPU)なしでLLMを動かす手順

この手順は、仮想マシンを用いて、日本語で質問・返答するLLMを動かすことができます。

目次

仮想マシンの用意

例として、https://www.virtualbox.org/ (Windows , Linux , Intel CPU搭載Mac )を仮想環境としてを使っていますが、他の仮想環境でも構いません。

< 以下は、VirtualBoxを使った場合の例 >

仮想サーバーのスペック

  • OS:Ubutnu Server 22.04 Server

  • 仮想CPU割り当て数 : 2

  • 仮想メモリ割り当て:8192MB(8GB)以上(つまり、PC側の物理メモリは16GB以上)

  • 仮想ディスク:64GB以上

  • ネットワーク設定:NAT + ホストオンリーアダプタの構成。ホストオンリーアダプタには、固定IPを割り当てること。

  • デスクトップ環境:なし

  • SSH接続:必須 ( ユーザー名 + パスワードでもOK )

  • GUI:なし << 少ないメモリでやりくりするため、GUIは不要。

仮想サーバー の設定

  • ホストオンリーアダプタの固定IP例:192.168.99.10

  • Your server’s name (ホスト名):ubuntu1test

  • ユーザー名 : vboxuser

  • パスワード:任意のもの

M1 / M2 / M3 といったApple Silicon CPUの場合は、VirtualBoxは使えないため、UTM や Parallels Desktop を使って、上記に相当する仮想マシンを作成してください。https://mac.getutm.app/ はWebサイトからからインストーラーをダウンロードしてインストールする場合は無料で使用可能です。

環境準備 ~ JupyterLab ~

JupyterLab は、Pythonで書いたプログラムを試行錯誤して動作確認できることに優れた環境です。Pythonの動作を見るためのファイルを「ノートブック」と言います。LLMの動作を見る作業環境として「JupyterLab」を使いますので、次のコマンドを実行していきます。Python実行環境であれば、「JupyterLab」をインストールしなくても構いません。Pythonを使ったプログラムを試す環境として便利なので、「Jupyter Lab」を使っています。

Linux環境を最新にアップデートします。

sudo apt update -y sudo apt upgrade -y

Linux環境、Ubuntu22.04には、Python3が入っていますので、Python用のパッケージ管理ツールの「pip」をインストールします。

sudo apt install -y python3-pip

「Jupyter Lab」の起動に必要なライブラリをインストールします。

pip3 install Jupyter pip3 install jupyterlab pip3 install pandas pip3 install numpy pip3 install SciPy

LLMを活用するためのライブラリをインストールします。

パスを通して「Jupyter Lab」を起動できるようにします。

Jupyter Lab の起動

以下のコマンドを実行して、「Jupyter Lab」を起動します。

実行結果

実行結果のうち、出力されたportとtokenを含める形で、Webブラウザでアクセスします。

上記の実行結果の場合は、次のように処理することで Jupyter LabのURLは次のようになります。

  • 127.0.0.1 を、仮想マシンのIPアドレス(例 192.168.99.10)に変更

  • toke=以降の文字列はトークン値なのでそのまま使用

tokenの値や、仮想マシンのIPアドレスは、各自で異なることがありますので、コピーして用いるのではなく、必ず自分の画面に表示された情報を使いましょう。

日本語LLM実行のノートブック作成

本資料では、2つの軽量なLLM(大規模言語モデル)を扱います。どちらも日本企業が作った国産LLMですが、独立GPUを使わずにCPUのみで動作させるため、ChatGPTやBing Chat、Google Bard のような強力な生成系AIではありません。日本語で質問すれば、日本語で返答してくれることはできます。高性能な独立GPUを使用可能であれば、そちらの方が精度は高く、より期待できるものとなります。

本資料では手軽にLLMを使えるように、CPUのみで動作させることを目的としています。

  • rinna社 : japanese-gpt2-medium

  • サイバーエージェント社 : OpenCALM-Large

japanese-gpt2-medium(パラメータ数 336M=3.36億)を使う場合

サンプルコードの実行

実行結果例

LLMの実行結果は、常に同じではないことに注意してください。常に同じ結果をもとめる場合は、ルールベースのAIの利用を推奨します。また、警告が表示されることがあります。

警告例

open-calm-large(パラメータ数 830M=8.3億)を使う場合

サンプルコード

max_new_tokens の値が小さすぎると、生成される文章が途中で途切れることがあります。

返答(実行結果)例 << 「AIの普及によって私たちの仕事は、」という質問に対する返答

LLMの実行結果は、常に同じではないことに注意してください。

その他の質問例と実行結果としては、次のようなものもあります。

質問例(2)

返答(実行結果)例(2)

質問例(3)

返答(実行結果)例(3)<< 軽量なので予想外の答えが返ってくることもある。

LLMの実行結果は、常に同じではないことに注意してください。常に同じ結果をもとめる場合は、ルールベースのAIの利用を推奨します。

回答の精度を高めるには

より高い精度の回答を返させることを求めると、よりパラメータ数の多いモデルを使う必要があります。もしくは、強化学習を行い、汎用から特化にシフトさせる方法もあります。

よりパラメータ数の多いモデルを使う場合

open-calm-1b(パラメータ数 1.4B=14億)を使う場合

CPUのみでの使用は、メモリ割り当てが10~12GB程度必要になるため、パソコン上で動かす仮想マシンのメモリに10~12GB程度を割当可能なスペックのパソコンが必要になる。

通常、ホスト(物理マシン)のメモリの半分までが、仮想マシンに割り当て可能なメモリの上限です。物理マシンで搭載メモリが16GBの場合、仮想マシンの割り当てメモリが4GBの際には2台まで仮想マシンを作成可能になることから、仮想マシンのメモリ割り当てを10~12GBとする場合、ホスト(物理マシン)のメモリが、最低24GBのデスクトップパソコンまたはノートパソコンが必要になります。家電量販店やパソコンショップで購入する場合は、24GBのメモリ搭載というものはないので、32GBのメモリを搭載するデスクトップパソコンあるいはノートパソコンを購入することになります。メモリを交換・増設可能なパソコンの場合は、自分でメモリを増やすことができるので、安上がりです。

仮想マシンの利用が難しい場合は、ホストに直接「Jupyter Lab」環境を構築することが必要になります。

サンプルコードの実行

max_new_tokens の値が小さすぎると、生成される文章が途中で途切れることがあります。

返答(実行結果)例 << 「AIの普及によって私たちの仕事は、」という質問に対する返答

LLMの実行結果は、常に同じではないことに注意してください。常に同じ結果をもとめる場合は、ルールベースのAIの利用を推奨します。

質問例(2)

返答(実行結果)例(2)

LLMの実行結果は、常に同じではないことに注意してください。常に同じ結果をもとめる場合は、ルールベースのAIの利用を推奨します。

カスタマイズ例

  • 既に、import sys があるので、Q&Aプログラム(qa-app.py)として仕立てる。

  • Q&Aプログラムを作った後、API を自作する。

  • 高性能な独立GPUを確保して、3B以上のパラメータ数の多いモデルを動かす。

  • 今あるモデルをもとに、汎用的なものから特化型にファインチューニングして、質問に対する返答の精度を高める。