【初級&中級】Linux Mintで生成AIサーバーを作ろう!【LLM&画像生成】
はじめに
この記事では、Linux Mint 22 Cinnamonを利用して、さまざまな生成AIを利用可能にするLinuxサーバーの構築方法を【初級&中級者向けに】解説したいと思います。
クラウドを使わずにローカルでAI生成を行いたいと考えているものの、現在使用しているパソコンのGPU性能が不足しているため新しいPCの購入を検討している方も多いと思います。しかしパソコン環境を変えたくない場合や、仕事に影響が出ることを懸念して、不要なソフトウェアの導入を避けたいという方もいると思います。そのような場合に、専用の生成AIサーバーの構築は最適です。
物理的に分離した専用サーバーでかつ(クラウドではなく)所有するパソコンでAI生成する事で、様々な利点を享受できます。
AIソフトウェアの性質上、どうしても多数のソフトウェアが自動で導入されます。悪意はなくとも有害なものバグがあるもの、PC環境を破壊するものが混入する可能性があります。AI専用サーバーを物理的に隔離する事で、被害を最小限にする事ができます。
学術目的のソフトウェアが多く、セキュリティ的に脆弱なものもあります。個人情報を一切含まない専用サーバーでの運用は利点になります。
自分のパソコンで生成AIを実行するので、プライバシーやセキュリティー、著作物等の私的利用に利点があります。
政府のガイドラインには「ChatGPT等で著作物や個人情報は入力するな」とありますが、ローカルAI生成を利用する事で、それらの制限から開放されます。
無料で無限に生成できます(もちろん電気代は必要です)
また、価格的にも有利です。Linux OSを利用する事で、OSライセンスを購入する必要もありませんし、工夫次第で、Windows11でサポート落ちした古い第6/7世代のIntel CPU世代のパソコンを再利用したり、中古市場で投げ売り状態のCPUを活用する事もできます。そもそも生成AIでは、CPUとメモリの演算性能、PCI-Eの転送性能はほとんど関係ありませんので、予算はGPU性能に全フリしてください。ゲーム用途よりGPU依存が顕著です。
※ ただし、システムメモリの速度は必要ありませんが、大容量が必要です。
専用AIサーバー利用の例として、非力なGPUのクライアント側でKritaを実行し、生成AI処理をサーバー側で行えば、リアルタイムAI生成で絶大な効果があります。クライアントPCには負荷がないので、生成中もなめらかに絵を描く事ができます。
GPU演算資源に余裕があれば、異なるAIサーバーで動作するローカルLLMを複数同時に実行する事もできます。
Linuxサーバーで生成した画像をNAS・Windowsのネットワークドライブとして直接アクセスできます。
Linuxサーバーとsshの(パスワードなし鍵認証)設定を行っていれば、Windows上のバッチファイルからダブルクリックのみでLinuxサーバー上のStable Diffusionを起動・終了でき、ログも確認できます。
Linuxサーバーの基本管理は、ログインも含めた物理画面をそのままWindowsへ飛ばします。(Windows RealVNC viewerを利用)
物理的な画面をそのままWindowsクライアントに表示できるので、Linux初心者に定評のあるLinux Mintを利用する理由でもあります。
本記事では、次の説明を行います。
Linuxを自力でインストールできるスキルのある人ならば、だれでも構築可能です。Linuxシェルや設定に精通している必要はありません。
NVIDIAグラフィックカードの設定
ヘッドレス(ディスプレイ&キーボードなし)運用
sshサーバー(コマンドライン・ログイン)設定
sambaファイルサーバー(NAS)設定
VNCサーバー(リモートデスクトップ)設定
Python言語パッケージ管理ソフトウェアAnacondaの導入
画像生成AIのA1111 Stable Diffusion webUIの導入
画像生成AIのComfyUIの導入とKrita-ai-diffusionのバックエンド設定
LLM(Large Language Model)の設定
Ollamaの導入
有名LLMモデルの導入
(pip版) Ollama Open WebUIの導入
※ 過去の記事と一部同じ内容もありますが、過去のものはWindowsでの導入記事で、本記事はLinux上のサーバーでの導入に特化した内容になります。
ハードウェア
Linuxサーバーのハードウェア
スペック的には高機能な「ゲーミングPC」である必要があるのですが、生成AIだけに特化したLinuxサーバーにする場合、さらに価格をケチる事が可能になります。
CPUはドウデモイイです。なぜなら正味の推論演算にCPUは全く利用しないからです。AMDでもIntelでも、Windows11のサポート落ちした6th/7th世代の古いIntel CPUでも問題ありません。(筆者も現役Linuxマシンとして使ってます)
システムメモリは、快適に利用するためには32GB以上が必要です。ただし高速なものは必要ありません。CPUと同じ理屈で、AI処理におけるシステムメモリの役割は、GPUメモリにデータを逐次送るキャッシュ・バッファの役割しかないからです。DDR4-2133/2666でも十分です。容量を重視してください。
SSD等のストレージも大容量が必要です。最低でも1TBは必要になると思います。ただし、動画編集と異なり書き込み処理が発生しないので、シーケンシャル読み込みだけが高速であれば問題ありません。(格安SSDが大活躍します)
すべての予算はGPU性能につぎ込んでください。特に演算速度よりもメモリ(VRAM)容量を最優先してください。最低でもGeforce RTXシリーズでGPUメモリは8GB以上が必須です。性能&コスパ重視の普及帯モデルであれば、AI用途として次のモデルが有名です。
Geforce RTX 3060 (12GB)
Geforce RTX 4060ti (16GB)
残念ながらNVIDIA一択です。CUDAが独占していますので。
Windows11クライアントのハードウェア
Windows11が動作するスペックならば、ノートパソコンでもビジネスパソコンでも小型パソコンでも問題ありません。生成AIの機能はLAN上のサーバーが担うからです。基本的にブラウザからサーバーにアクセスして利用します。
もちろん、タブレットやスマホからでも可能です。
Linux OSをインストールする
Linuxであればどのディストリビューションでも構いませんが、最もシンプルで安定しているLinux Mintがおすすめです。もちろんLinux Mintはデスクトップ用途のLinuxでありサーバー用途のOSではないのですが、初心者にとって扱いやすく、最も良いチョイスです。
そもそもサーバー用途において優れているLinuxとは、専用の管理ツールが含まれているかどうかなので、その専用管理ツールを扱うスキルが必要になります。多くの非技術者にとって利点にはなりません。
Linux Mint 22 Cinnamon Edition
公式ページはこちら、
特に理由がなければ、もっとも利用者の多い「Cinnamon Edition」をダウンロード欄から選んでください。
ネット上には多くのLinux mintの導入方法の説明がありますので、詳細は譲りたいと思います。ここでは、基本的なインストール方法の簡単な流れのみを紹介します。※ サーバーやAI設定に重きをおきます
WindowsでLinux Mintのイメージをダウンロード
WindowsのフリーソフトRufusを利用してインストールイメージをUSBメモリに転送
USBメモリをパソコンに差し込んで起動(BIOS/UEFIから選択)
デフォルト設定でインストール
※ VNC設定でトラブるので、自動ログインはOFFにしてください
再起動
Linux Mint 22のネットワーク設定
Linux Mint 22 Cinnamon Editionのインストール終了直後から説明を行います。
※ 遠隔操作の設定が終了するまで、物理ディスプレイ及びマウス&キーボードを接続して設定を行ってください。
最初に各モジュールを最新にします。
キーボードやディスプレイなしでアクセスできるように、先にネットワーク関連の設定を行います。
sshサーバーの設定
sshとはコマンドラインで遠隔操作するツールです。Linuxはコマンドラインでほぼすべての設定が行えるように設計されています。つまり、ssh接続でのLinuxサーバーへのログインが基本中の基本になります。
まずはLinuxコマンドを入力するためのターミナルを起動します。
sshサーバーのインストールを行います。Gnome端末を開き、下記コマンドを入力してください。※ Linuxでは、sudoの後にコマンドを実行すると、管理者権限(root)でそのコマンドが実行されます
#Linuxサーバー側コマンド
sudo apt install openssh-server
処理が終了すれば、クライアント側のパソコン(Windows11)からssh接続できるか確認します。
Windows11のスタートメニューに「cmd」を入力しコマンドプロンプトを起動します。
最近のWindows11にはsshコマンドがデフォルトでインストールされています。コマンドプロンプトに下記コマンドを入力してください。「user01」はインストール時に設定したLinuxのユーザー名で、「192.168.122.167」は上記で設定したLinuxサーバーのIPアドレスです。
#Windows11クライアント側
ssh user01@192.168.122.167
初回時のみfingerprintの受け入れを要求されます。パスワードを入力するとログインできます。これでWindows11クライアントPCからLinuxサーバーへ接続する事ができ、sftp、scpコマンドでファイル転送も可能になります。
たとえば、Linuxサーバー上のファイル「memo.txt」をWindowsデスクトップへコピーしたい場合は、「scp <コピー元> <コピー先>」の書式で
#Windows11クライアント側
scp user01@192.168.122.167:/home/user01/memo.txt C:\Users\art3d\Desktop\
とできます。GUIで行いたい場合は、WindowsフリーソフトウェアwinSCPを利用する方法もあります。
※ もしsshコマンドが見つからない場合は、「システム」→「オプション機能」より「OpenSSHクライアント」をインストールしてください。
※ パスワードなしの鍵認証でsshを利用する方法
サーバーにアクセスする際に、その都度パスワードを入力するのが面倒であれば、次の設定を行って下さい。鍵認証のみでログインできます。
① クライアントであるWindows側のコマンドプロンプトを起動して公開鍵と秘密鍵を作るコマンドを実行します。
#Windows11クライアント側
ssh-keygen.exe -t rsa
Enter passphraseで「Enter」のみ入力するとパスワードなしの対の鍵が作成されます。
秘密鍵:id_rsa
公開鍵:id_rsa.pub
「C:\Users\art3d\.ssh\id_rsa.pub」に公開鍵が作成されるので、この公開鍵をLinuxサーバー側に登録します。※ 知られてはいけない鍵は「秘密鍵 id_rsa」です
② 一時的にWindowsで作成した公開鍵をLinuxのホームディレクトリにコピーします。
#Windows11クライアント側
scp.exe C:\Users\art3d\.ssh\id_rsa.pub user01@192.168.122.167:~/
Linuxサーバー側の設定を行うため、Linuxへsshログインします
#Windows11クライアント側
ssh.exe user01@192.168.122.167
③ Linux側で(鍵は必要ないのですが).sshフォルダを適切に作成するために、ssh-keygenコマンドを実行します。※ パーミンション等も正しく作成する必要があるため、コマンドの実行が最も簡単です。
#Linuxサーバー側
$ ssh-keygen -t rsa
Winddows側と同様に「/home/user01/.ssh」ディレクトリが作成されます。
④ ②のコマンドにより、Linuxサーバーのホームディレクトリに「/home/user01/id_rsa.pub」がコピーされているので、このファイルの内容を「/home/user01/.ssh/authorized_keys」に追記します。ファイル「authorized_keys」がない場合は新規に作成されます。
#Linuxサーバー側
#ファイルの内容をauthorized_keysに追加
cat /home/user01/id_rsa.pub >> /home/user01/.ssh/authorized_keys
#追加した後は一時的にコピーした公開鍵を削除
rm -i /home/user01/id_rsa.pub
問題なければ、これでパスワードなしのログインが可能になります。
VNCサーバーの設定
Linuxの場合、技術者ならssh接続だけですべての設定を行う事ができますが、そうでない場合は現実的ではありません。そこで、セキュリティ的には脆弱ですが、Linuxデスクトップ物理画面すべてをWindowsクライアントマシンに表示して遠隔管理します。
VNCとは、ネットワークを通じて別のコンピュータの画面を自分のパソコンに表示し、まるで目の前のパソコンのように操作できるリモートデスクトップソフトウェアです。その中でもここで紹介するx11vncは、Windowsのリモートデスクトップとは異なり、物理的に表示される画面をリモートに飛ばすソフトウェアです。
※ 下記設定はroot(管理者権限)でVNCサーバー動作を行う設定です。家庭や社内などの安全なLAN環境で利用してください。
① まずは、Linuxサーバーの設定を行います。VNC本体のx11vncを導入します。
#Linuxサーバー側
sudo apt install x11vnc
② 設定ファイルを編集するためのGUIテキストエディタgnome-editor(gedit)を導入します。Windowsで言うメモ帳です。
#Linuxサーバー側
sudo apt install gedit
③ ディスプレイマネージャの設定を変更します。外部からのリモート接続を許可する設定にします。
#Linuxサーバー側
sudo gedit /etc/lightdm/lightdm.conf
「lightdm.conf」ファイルに以下を入力して保存してください。
[Seat:*]
xserver-allow-tcp=true
xserver-command=X -listen tcp
④ x11vncのパスワードファイルを設定します。コマンド実行後、/etc/x11vnc/vncpwdに保存されます。※「pass1234」はパスワードです。適宜変更してください。
#Linuxサーバー側
sudo mkdir /etc/x11vnc
sudo x11vnc -storepasswd pass1234 /etc/x11vnc/vncpwd
⑤ systemdを利用したx11vncの自動起動を設定します。systemdとは、Windowsでのサービスに相当するものです。
「x11vnc.service」ファイルを作成します。
#Linuxサーバー側
sudo gedit /etc/systemd/system/x11vnc.service
次の内容を書き込んで保存してください。
[Unit]
Description=Start x11vnc
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth /var/lib/lightdm/.Xauthority -display :0 -forever -noxdamage -loop -repeat -rfbauth /etc/x11vnc/vncpwd -rfbport 15900 -shared
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure
[Install]
WantedBy=graphical.target
打ち込むのが大変な場合は、一旦Windows上のデスクトップ等にメモとしてテキストファイルを作成し、Windowsのコマンドプロンプトから下記コマンドで転送します。その後geditのGUIコピーペーストを利用してください。
#Windowsクライアント側
scp C:\Users\art3d\Desktop\memo.txt user01@192.168.122.167:/home/user01/memo.txt
デーモン(サービス)を有効化します。
#Linuxサーバー側
sudo systemctl daemon-reload
sudo systemctl enable x11vnc
⑥ 再起動します。
VNCクライアント(Windows側)の設定
VNCが正常に動作しているかどうかを、Windows11クライアントから確認します。VNCクライアント・ソフトウェアはいくつか存在しますが、その中でも有名なフリーソフトの「RealVNC viewer」を利用します。
ダウンロードはこちら、
https://www.realvnc.com/en/connect/download/viewer/
RealVNC viewerをインストール後に起動すると次の画面が出ますが、サインインしなくても利用できます。
LinuxサーバーのIPアドレスと上記「x11vnc.service」ファイルで指定したポート番号(15900)を入力してエンターキーを押します。
パスワードを求められるので、上記で指定したパスワード(例ではpass1234)を入力します。ただし、暗号化なし通信なので、下記警告がでます。家庭や社内などの安全なLANである事を確認してください。
通信が成功するとLinuxサーバー画面が表示されます。ログイン画面から物理画面と同じものがすべて表示されます。
これで、キーボードもマウスもディスプレイも不要になります。Linuxサーバー・パソコン本体を(LAN設備のある)別の部屋や熱がこもらない程度の風通しの良い場所に設置してください。
以降のLinuxサーバー側の操作は、VNC画面上での操作を意味します。Linuxコマンド入力は、VNC上で起動したGnome端末に入力する事を意味します。
※ もちろん、キーボード&マウスの物理画面操作でも構いません。
ファイルサーバーの設定(NAS設定)
sshの設定を行うとファイル転送も行えますが、Windowsのネットワークドライブ(NAS)として利用した方が何かと便利になります。
Linuxサーバーのホームディレクトリ「/home/user01」に右クリック新規作成で「app」ディレクトリを作成し、Windowsからアクセス可能な共有ディレクトリとします。
※ 以後、記事ではこのappフォルダに生成AIのソフトウェアを導入していきます。
「右クリック」→「共有の設定」とすると下記画面が表示されるので、「インストール」を押して各種設定をインストールします。その後再起動を求められるので再起動します。
再起動後、再度「共有の設定」を表示して「このフォルダを共有」をONにします。「共有を作成」とします。
もっとも簡単なパスワード認証方法としてsmbpasswdコマンドを利用する方法があります。
#Linuxサーバー側
sudo smbpasswd -a user01
新たにsamba用パスワードを設定します。念の為Linuxを再起動します。
Windows11からアクセス可能か確認します。
アドレス欄に直接「\\192.168.122.167」等の設定したIPアドレスを打ち込むと共有したディレクトリが表示されます。
ダブルクリックするとユーザー名とパスワードを求められるため、smbpasswdで設定したものを入力して、資格情報をWindowsに記憶します。
エラー無くアクセスできれば、Shift+右クリックで「ネットワークドライブの割当」を選択します。
ネットワークドライブとして「app」フォルダにアクセスできるようになります。
環境設定
NVIDIAドライバ設定
AI処理に利用するCUDA等のプロプリエタリ機能を利用するには、NVIDIAが提供する最新のプロプリエタリ・ドライバが必要になります。Linuxにはアップデート用のリポジトリを追加する機能があるので、(有名な)NVIDIAドライバを配布している「Graphics Drivers team」のPPAを追加します。
次のコマンドを入力します。
#Linuxサーバー側
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
apt updateコマンドの終了後、コントロールセンターを開きます。
最新のNVIDIAドライバーの一覧が表示されるため、理由がなければ最新版を選択して「変更を適用」します。コマンドラインでの導入も可能です。
#Linuxサーバー側
sudo apt install nvidia-driver-560
gitコマンドの導入
git コマンドのインストールを行います。git コマンドとは、共同でソフトウェア等を開発する時に利用するコマンドです。今回のように利用者側で使う場合も、ソースファイルをローカルへダウンロードするために利用します。
#Linuxサーバー側
sudo apt install git
ハードウェア情報の取得
AI処理をはじめ、長時間負荷のかかる数値計算を行う場合は、常にハードウェアが適切に動作しているかを確認する必要があります。暴走していたり、冷却が正しく機能していなかったりする可能性がありますので。
htopコマンド
CPUやメモリ状況を取得できます。「htop」コマンドで表示します。
#linuxサーバー側
sudo apt install htop
Linux Mintデフォルトのシステムモニター
メニューの「システム管理」から選択します。
nvtopコマンド
GPUの使用状況を確認できます。「nvtop」コマンドで表示します。
#linuxサーバー側
sudo apt install nvtop
psensorコマンド
GUIで各種ハードウェアの温度情報を取得できます。「psensor」コマンドで表示されます(GUIアプリなのでVNC上で利用ください)
#linux側
sudo apt install psensor
生成AIアプリケーションの導入準備
ここから先は
この記事が気に入ったらサポートをしてみませんか?