Skip to content

DNET_OSSLLM

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

OSSのLLM

概要

OSS(オープンソース)のLLMは、ローカルマシンやオンプレミス環境で動作可能なものが多く、
クラウドサービスに依存せずに利用でき、機密情報を扱うクローズドな環境でも安全に導入できる。

詳細

注意点

ライセンスの確認

  • ライセンス形態を確認し、商業利用や再配布の条件を理解。
  • ライセンス条項を確認しプロジェクトやビジネスへの適用可能性を評価。

OSSのライセンス

コミュニティの活発度

コミュニティの活動状況を確認。

  • 活発なコミュニティは、

    • 質問やサポートを得易い。
    • バグ修正や機能改善が迅速に行われる可能性が高い。
  • GitHubを参考にする。

    • スター数
    • フォーク数
    • プルリクエスト数

ベンチマークと評価

  • 性能を評価するためのベンチマークテストを実施。
  • 既存のベンチマーク結果や評価レポートを確認
  • 自社の使用ケースに対する適用性を検討。

性能とスケーラビリティ

  • 項目

    • モデルの性能(応答速度、精度)
    • スケーラビリティ(負荷分散、水平スケーリング)
  • 環境

    • 大規模なデータセット
    • 高トラフィック環境

ハルシネーション・バイアスなど

  • LLMの生成する出力が虚偽情報や偏見を含む可能性があるため注意。
  • これらの問題を緩和するための対策
    (フィルタリング、ポスト・プロセッシングなど)を講じる。

メンテナンスとサポート

OSS LLMのメンテナンス体制とサポート体制を確認。

  • 商用版のサポートがあるか?
  • 開発が活発に行われているか?
  • バグフィックスやセキュリティ・アップデートが定期的に提供されているか?

カスタマイズの容易さ

  • 自社のニーズに合わせたカスタマイズの容易さを評価。
  • 開発が簡単かどうかを確認
    • コードの理解し易さ
    • ドキュメントの充実度
    • プラグインやエクステンション

データ保護

モデルのトレーニングや推論に使用するデータの保護を確認。

  • 著作権侵害や情報漏洩に繋がらないように対策が施されていることを確認
  • なお、アクセス制御、セキュリティ対策は構築で確保する。

著名なモデル

Llama

  • Metaによって開発、リコーなどで導入事例あり。
  • 事前学習済みのLlamaを動かす情報はネットにも確認できる。

Gemma

  • Googleによって開発、企業での導入事例は発見できず。
  • 事前学習済みのGemmaを動かす情報はネットにも確認できる。

Phi-3

  • MicrosoftがSLM(Small Language Model)として開発したPhi-3、
    企業での導入事例は発見できず。
  • 事前学習済みのPhi-3を動かす情報はネットにも確認できる。

Mixtral

  • Mistral AIによって開発、SB、楽天、トヨタなどで導入事例あり。
  • 事前学習済みのMistral AIを動かす情報はネットにも確認できる。

Falcon

アブダビのTechnology Innovation Institute(TII)によって開発

BLOOM

BigScienceという協力的AI研究ワークショップによって開発

EleutherAI

草の根の非営利の人工知能研究グループによって開発

Qwen2

  • アリババによって開発、企業での導入事例は発見できず。
  • 事前学習済みのQwen2を動かす情報はネットにも確認できる。

CodeGen

Salesforceが提供するLLM

Databricks

AI/BI系のプラットフォームベンダで、色々なOSSをホストしている。

モデル区分

Pretrainedモデル

  • 事前学習済みモデル
  • ラベル:pretrain

Instruction-tunedモデル

  • 「命令 + 入力 → 応答」の形式で学習されているChat用途にも流用可。
  • ラベル:instruct

Chatモデル

  • Instructionモデルの中でも、特にchatbot形式(役割/文脈付き会話)に最適化。
  • ラベル:chat

Codeモデル

Multimodalモデル

  • テキスト+画像、テキスト+音声などの複合入力に対応。
  • ラベル:vit, clip

多言語モデル

  • 日本語や多言語のデータを含む。
  • ラベル:language、multilingual、japanese, ja

モデル・サイズ

  • Bは、10億パラメタを意味し、1BあたりのGPUメモリ使用量の目安は以下の通り。
サイズ 説明
float32 約4GB フル
float16 約2GB 1/2
bfloat16 約2GB 1/2
int8量子化 約1GB 1/4
4bit量子化 約0.5GB未満 1/8

※ 参考:パラメタ数(テキスト生成系(Transformer系)の該当節を参照)

  • Tは、B(10億)の10^3となる、1兆パラメタを意味し、フロンティアモデルで使う。

  • G(10億)を使わないのは業界慣例、GやTは2進・10進の両方で使うが、
    Bは常に10進の意味。

  • なお、Hugging FaceなどでリリースされているLLMには
    複数のサイズ違いがある。

    • 同シリーズ&バージョンのパラメタ数の大 / 小
    • 量子化(Quantization)パターン(ggml, gguf, awq, gptq, exl2 など)
  • ちなみに、明確な定義はないが、SLMは、一般的には7B以下のものらしい。

100M〜3B

モバイル向け、軽量モデル、SLM(Small)

7B〜70B

高性能モデル、LLM(Large)

100B〜数百B

高精度モデル、VLM(Very Large)

1T~10T

フロンティア

フォーマット

GGML、GGUF、GPTQは、主にLLMの軽量化・実行する際の 形式・技術・ツール

GGML

(Georgi Gerganov's ML Library)

  • llama.cpp推論エンジンから利用する。
  • 特にCPUやGPUなし低リソース環境でもLLMを推論できるよう最適化された高速なモデル
  • C/C++で書かれた、軽量な機械学習ライブラリとモデルの独自バイナリ形式
    (→GGUFへと進化)
  • 統一規格ではなく、実装者により異なるバージョンが存在していたため、
    互換性に課題があった。

GGUF

(GGML Universal Format)

  • GGMLの独自バイナリ形式の進化形の後継で、より汎用性と互換性を持たせた。

  • メタデータ、トークナイザ、量子化情報を1ファイルに格納、配布・利用を標準化。

  • 軽量化・推論専用に最適化された形式で、推論のみが目的となる。

  • 多くのローカル実行系(llama.cpp、text-generation-webuiなど)が対応

  • llama.cpp の convert_hf_to_gguf.py、llama-quantize とか?

  • 参考:GGUF 変換メモ #llama.cpp - Qiita
    https://qiita.com/7shi/items/14d24a25aa26dcf97d2d

GPTQ

(GPT Quantization)

  • Hugging Face Transformersライブラリから利用する。

  • 学習済みモデルに対して量子化を施すツール、方式、形式

  • サイズと推論コスト(メモリ・速度)を大幅に削減し、精度も保つ。

    • 2bit, 3bit, 4bitなどへの量子化が可能
    • Transformer層ごとに最適なスケーリングを行うことで、精度を最大限維持
  • よく使われる形式

項目 旧形式 Hugging Face形式
ファイル形式 PyTorchバイナリ(.bin) HF標準構成(.safetensors で量子化済)
互換性 限定的(専用コード必要) AutoGPTQ, transformers 互換
配布 zipやgitで配布 Hugging Face Hubで共有
安全性・速度 通常の.binは非検証 .safetensorsで検証&高速
推奨度 過去の形式、現在は非推奨 標準化されており現在の主流・推奨
 your-gptq-model/
 ├── model.safetensors          ← GPTQで量子化された重み(低ビット)
 ├── config.json                ← 通常のTransformers config
 ├── tokenizer.*                ← トークナイザ設定
 ├── quantize_config.json       ← GPTQ量子化の設定情報

図表

項目 GGML GGUF GPTQ
種類 推論実行ライブラリ兼モデルフォーマット モデルフォーマット 量子化技術・ツール
主な用途 軽量モデルの実行 モデル配布・互換性統一 モデルの圧縮(量子化)
関連技術 llama.cpp llama.cpp, koboldcpp など ExLlama, AutoGPTQ など
主な形式 .bin(旧) .gguf(新) .bin(旧), .safetensors, .json, .model(新)
 ┌──────────────┐
 │   llama.cpp │  ← 実際の推論エンジン
 └────┬─────────┘
      │ uses
      ▼
 ┌──────────────┐
 │    GGML     │  ← テンソル演算ライブラリ(中核)
 └──────────────┘
      ▲
  uses models in │
      ▼
 ┌──────────────┐
 │    GGUF     │  ← モデルファイルフォーマット
 └──────────────┘

HF標準構成

  • Hugging Face Transformersライブラリ※1と互換性のあるモデル・ディレクトリ構成

  • モデルの再利用・共有・ロード・保存をスムーズに行うために定められた標準的な構成

  • ※1:

    • Hugging Face が開発したOSSのTransformersライブラリ
    • もともと PyTorch ベースで開発されたライブラリ
    • 現在はTensorFlow(TensorFlow・Keras), Flaxにも
      部分的に対応したマルチフレームワーク対応ライブラリ
    • ただし、PyTorch が最も優先されており、
      最新機能も先に PyTorch に実装される傾向がある。
形式 内容 詳細 備考
Transformers形式 pytorch_model.bin, tf_model.h5, flax_model.msgpack, config.json, tokenizer.json など Hugging Face Transformersライブラリが使用する標準的なファイル構成。フレームワークに応じたモデル重みファイル(PyTorch、TensorFlow、Flax)と設定・トークナイザファイルを含む。 学習・微調整・推論が可能で、特に研究・開発用途に適している。ファイルは一般的にPythonのpickle形式で保存されるため、セキュリティ面では注意が必要(意図しないコードが実行される可能性がある)。
Safetensors形式 .safetensors というバイナリ形式 Hugging Face Transformersで利用可能な、安全性と読み込み速度を重視したフォーマット。pickleに比べて安全で、高速にロード可能。なお、TensorFlowは非対応とのこと。 セキュアで信頼性が高く、推論用途や本番環境での利用に推奨される。構造化されたバイナリ形式で、意図しないコードの実行を防止。pytorch_model.safetensors などのファイル名で提供される。

Transformers形式

  • ディレクトリ構成
 my_model_directory/
 ├── config.json
 ├── pytorch_model.bin
 ├── tokenizer_config.json
 ├── vocab.txt / merges.txt / tokenizer.json
 ├── special_tokens_map.json
 ├── generation_config.json
 └── added_tokens.json
  • ファイルの説明
ファイル 説明
config.json(必須) モデルアーキテクチャの設定
pytorch_model.bin, tf_model.h5, flax_model.msgpack PyTorch、TensorFlow、Flaxモデルの重み(PyTorchの場合は必須)
tokenizer_config.json トークナイザの設定情報
vocab.txt, merges.txt, tokenizer.json トークナイザの語彙情報
special_tokens_map.json トークンのマッピング情報([CLS], [SEP], [PAD] など)
generation_config.json テキスト生成関連のパラメータ(max_length, temperature, top_k など)
added_tokens.json(任意) ユーザーが追加したトークンの情報

Safetensors形式

  • ディレクトリ構成
 my_model_directory/
 ├── config.json
 ├── model.safetensors         ← PyTorch版の重み
 ├── tokenizer_config.json
 ├── vocab.txt / merges.txt / tokenizer.json
 ├── special_tokens_map.json
 └── generation_config.json
  • Safetensorsの特徴
特徴 内容
安全性 Pythonのpickleを使わないため、読み込み時に任意コードが実行されない(セキュア)
高速性 バイナリ形式で効率的にメモリマッピングされるため、ロードが速い
一貫性 ファイルを開かなくても中身(テンソル名・形状)をメタデータから確認できる
互換性 主にPyTorchとHF Transformersで広く使われているが、TensorFlow・Flaxへのサポートはまだ限定的。

検証環境

移行メモ(正誤): 元ページの見出し「検環環境」は「検証環境」の
誤記と判断し修正した。

VM費用見積もり

  • 稼働時間
    5(営業日/週) * 4(週/月)* 3(時間/日)= 60(時間/月)で見積もり
    ※ 1か月フル稼働は730時間なので60/730 ≒ 0.08ヵ月分

移行メモ(正誤): 元ページは稼働時間 60(時間/月)と算出しておきながら
「30/730 = 0.04ヵ月分」となっていたため「60/730 ≒ 0.08ヵ月分」とした。

  • VMサイズ
    SLM推論実行などではギリギリ不要だが、
    LLM実行やファインチューニングにはGPUが必要になる。

    • LLaMA 3 1B、Phi-3は(GPUを実装しない)ノートPCでも動作する。

    • LLaMA 3 8BにはGPUが必要で、

      • 必要なVMサイズは、AzureでNC4as_T4_v3辺りで、
      • コレは、0.5-1万/月、一か月上げっぱなすと10-20万
    • 小さなモデルをファインチューニングをする場合、

      • 必要なVMサイズは、GPUのVRAMが24GBほど必要で、
      • AzureでStandard_NV36ads_A10_v5(Nvidia A10)位のスペックが必要。
      • コレは、1.5万/月、一か月上げっぱなすと30-50万
    • 大規模言語モデル(LLaMA 3 70B)を稼働させる場合、

      • AzureでND96asr_A100_v4(Nvidia A100)位のスペックが必要。
      • コレは、10万/月(無理(笑))、一か月上げっぱなすと300万
      • あまりに高額なので、調べるとA100は1枚で$11,000(約163万円)らしい。
  • 付帯費用
    Azure Bastion 2万/月など

  • 実費総額

    • コレはミニマム環境なので、予算としては、5万/月ほどあると良さそう。
    • リージョンを変えると価格が大きく変わるので、
      検証用途なら、日本にする必要はないかも。

GPU付きVMを準備

  • 使用可能なVMサイズを表示
az vm list-sizes --location japaneast --output table --query "[?contains(name, 'Standard_N')]"
  • Standard_NのVM は NVIDIA GPU が搭載されている。

  • Standard_NC8as_T4_v3 は時間1ドル程度らしい。

  • 以下の変数を変更し(Ubuntu 24.04 on Azure via Bastion 2025/2/27の該当節を参照)、VMを作成する。

vmSize=Standard_NC8as_T4_v3
vmOS=Ubuntu2404
vmName=GPU-VM1
vmUser=XXXX
vmPassword=XXXX

インストレーション

az vm update \
  --resource-group <RG名> \
  --name <VM名> \
  --set securityProfile.uefiSettings.secureBootEnabled=false \
        securityProfile.uefiSettings.vTpmEnabled=false
  • GPU 割り当て確認

    • PCIバス接続デバイス情報を表示
 lspci | grep -i nvidia
 0001:00:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
- NVIDIA製GPUドライバ情報を表示\
  ココで認識できていれば、NVIDIAドライバのインストールは不要かも
 nvidia-smi
 Command 'nvidia-smi' not found, but can be installed with:
 sudo apt install nvidia-utils-...
  • 既存ドライバがある場合、削除(再構成時はこの手順が必要)
sudo apt --purge remove -y nvidia-*
sudo apt --purge remove -y cuda-*
sudo apt --purge remove -y libcudnn*
sudo apt --purge remove -y cudnn-*
sudo apt autoremove -y
sudo reboot
  • NVIDIAドライバのインストール

    • ubuntu-drivers ユーティリティをインストール
sudo apt update && sudo apt install -y ubuntu-drivers-common
  • 最新版をインストール(Azureの手順はコッチ)
sudo ubuntu-drivers install
  • recommendedを確認してインストール
 ubuntu-drivers devices
 ...
 driver   : nvidia-driver-575-open - third-party non-free recommended
 ...
- recommendedをインストール\
  ・自動
sudo ubuntu-drivers autoinstall
  ・手動
sudo apt install -y nvidia-driver-535(例)
  • Your system has UEFI Secure Boot enabled. UEFI Secure Boot requires ...
    というエラーが出たら「セキュア ブート」「vTPM」無効化の手順を飛ばしている。

  • 再起動

sudo reboot
  • NVIDIAドライバの確認

    • NVIDIAドライバロードの確認
sudo dmesg | grep -i nvidia
- NVIDIA製GPUドライバ情報を表示
 nvidia-smi
 Wed May 14 09:29:03 2025
 +---------------------------------------------------------------------------------------+
 | NVIDIA-SMI 535.230.02             Driver Version: 535.230.02   CUDA Version: 12.2     |
 |-----------------------------------------+----------------------+----------------------+
 | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
 | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
 |                                         |                      |               MIG M. |
 |=========================================+======================+======================|
 |   0  Tesla T4                       Off | 00000001:00:00.0 Off |                  Off |
 | N/A   32C    P8              11W /  70W |     84MiB / 16384MiB |      0%      Default |
 |                                         |                      |                  N/A |
 +-----------------------------------------+----------------------+----------------------+

 +---------------------------------------------------------------------------------------+
 | Processes:                                                                            |
 |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
 |        ID   ID                                                             Usage      |
 |=======================================================================================|
 |    0   N/A  N/A      1129      G   /usr/lib/xorg/Xorg                           81MiB |
 +---------------------------------------------------------------------------------------+

※ 表示されているCUDAバージョンは、
当該NVIDIAドライバが対応している最大のCUDA Toolkitバージョンを示す。

  • CUDA Toolkitのインストール
    「CUDA Version: 12.2」なので12.2以下のインストールが望ましいのかもしれないが、
    ココでcuda-toolkit-12-5、12-8で問題なかった。
    (実行バイナリを作成する際に --gpu-architecture=compute_75 --gpu-code=sm_75 などと、
    ドライバ(12.2)に対応させられるらしい)

    • Azure
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo apt install -y ./cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt -y install cuda-toolkit-12-5
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8
  • 再起動
sudo reboot
  • CUDAバージョン情報の確認
    CUDA ToolKitとともにインストールされる CUDA C++ のコンパイラ・ドライバ、
    nvcc の -V オプションで(≒ CUDA ToolKit ≒ CUDAの)バージョンを表示させる。

    • nvccを実行するには、環境変数 PATH に CUDA の bin ディレクトリを含める必要がある。
export PATH=/usr/local/cuda/bin:$PATH
- nvcc の -V オプションを実行すると、以下のように表示される。
 $ nvcc -V
 nvcc: NVIDIA (R) Cuda compiler driver
 Copyright (c) 2005-2025 NVIDIA Corporation
 Built on Fri_Feb_21_20:23:50_PST_2025
 Cuda compilation tools, release 12.8, V12.8.93
 Build cuda_12.8.r12.8/compiler.35583870_0
  • cuDNNのインストールはパス。

移行メモ(正誤): 元ページの「cuDNNn」は「cuDNN」の誤記と判断し修正した。

  • 展開後のドライバ定期更新
sudo apt update
sudo apt full-upgrade

※ ただし、互換性が重要で、慎重なアップグレードが推奨されるため、
自動更新ではなく手動での確認・インストールが一般的。

Python 環境で確認

  • pythonのバージョンを確認
 python3 -V
 Python 3.12.3
  • pythonのパッケージマネージャーpipをインストール
sudo apt install python3-pip
sudo apt install python3-venv
  • 仮想環境作成
python3 -m venv .python3_venv
  • アクティブ化(環境外から実行)
source .python3_venv/bin/activate
  • 非アクティブ化(環境内から実行)
deactivate
  • フレームワークをインストール
    仮想環境の「外」でやるか「中」でやるかは要検討だが、
    「外」に入れても「中」では使えないので基本は「中」かと。

    • ERROR: Could not install packages due to an OSError:
      [Errno 28] No space left on device対策

      • pipキャッシュをクリア
pip cache purge
- FS内のFSの量を表示
 df -h
 Filesystem      Size  Used Avail Use% Mounted on
 /dev/root        29G   23G  5.2G  82% /
 tmpfs            28G     0   28G   0% /dev/shm
 tmpfs            11G  1.3M   11G   1% /run
 tmpfs           5.0M     0  5.0M   0% /run/lock
 efivarfs        128K   35K   89K  28% /sys/firmware/efi/efivars
 /dev/sda16      881M   60M  760M   8% /boot
 /dev/sda15      105M  6.2M   99M   6% /boot/efi
 /dev/sdb1       346G   32K  328G   1% /mnt
 tmpfs           5.5G  108K  5.5G   1% /run/user/112
 tmpfs           5.5G  112K  5.5G   1% /run/user/1000
- /mntが大きそうなのでココにワーク領域を作成
sudo mkdir -p /mnt/tmp
sudo chmod 1777 /mnt/tmp
  • ワーク領域を指定してGPU対応版をインストール

    • 「TMPDIR=/mnt/tmp pip」として、unpackingフォルダを指定

    • index-urlでCUDA対応版を明示してGPU対応版をインストール

TMPDIR=/mnt/tmp pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
- CUDAが古い場合、torch系のバージョン番号を指定。\
  https://pytorch.org/get-started/previous-versions/
TMPDIR=/mnt/tmp pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
  • バージョン確認

    • torch 2.7.0+cu... を想定
 $ pip list
 Package                   Version
 ------------------------- --------------
 ...
 torch                    2.7.0+cu128
 torchaudio               2.7.0+cu128
 torchvision              0.22.0+cu128
 ...
- torch 2.6.0+cu... を想定
 $ pip list
 Package                   Version
 ------------------------- --------------
 ...
 torch                    2.6.0+cu124
 torchaudio               2.6.0+cu124
 torchvision              0.21.0+cu124
 ...

移行メモ(正誤): 元ページのバージョン確認の 2 例はいずれも
「torch 2.7.0+cu...を想定」となっていたが、後者の出力は 2.6.0+cu124 のため
「torch 2.6.0+cu... を想定」とした。

  • 実行確認(インタラクティブ実行で)
 python3
 >>> import torch
 >>> print(torch.cuda.is_available())  # TrueならOK
 True
 >>> print(torch.cuda.get_device_name(0))  # GPU名表示
 Tesla T4

ディスク追加

Ubuntu 24.04 on Azure via Bastion 2025/2/27
該当節を参照。

Dockerを使用

以下のような

  • VMがドライバ
  • DockerがCUDA
  • venvがpip

役割分担で保守性向上

ファインチューニング

LLMのFT

参考

環境準備

VM費用見積もり(参考)

GPUを認識させる

ツール類

Ollama

Ollama

Hugging Face

Hugging Face

Notebook


Tags: 移行, LLM, OSS, 生成AI, GPU, CUDA, 開発基盤

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally