広告

FedoraでRamaLamaを始める

Dev.to / 2026/4/1

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • RamaLamaは、AIモデルをローカルで実行するためのオープンソースのコンテナベースツールであり、検出されたハードウェアに合わせたOCIイメージを使うことで推論セットアップを予測可能にすることを目指しています。
  • Fedoraでは、デフォルトのコンテナエンジンとしてPodmanを使うこと、またモデルサイズに見合う十分なディスク容量とRAMを確保すること(小さめのモデルで約8GB以上、7B以上で16GB以上)をガイドでは推奨しています。
  • インストールはFedoraのデフォルトリポジトリから`sudo dnf install ramalama`で行うだけとシンプルで、その後`ramalama version`でバージョン確認をします。
  • RamaLamaはシステムを自動的に調査してGPU対応を判断し、必要に応じてCPUへフォールバックします。推論には`llama.cpp`を含むOCIイメージを取得し、モデルをローカルにキャッシュして、繰り返しのダウンロードを避けます。
  • このツールは複数のモデルレジストリに対応しており、デフォルトはOllamaです。`ollama://`や`huggingface://`(または`hf://`)のようなトランスポート接頭辞を使って、ユーザーがソースを選択できるようになっています。

RamaLama は、containers 組織のもとで開発されたオープンソースのツールで、AIモデルをローカルで動かすことを、コンテナを扱うのと同じくらい簡単にします。目標は、AI推論を退屈で予測可能なものにすることです。RamaLama は、システムが検出したハードウェアに合わせてチューニングされた OCI(Open Container Initiative) コンテナイメージを取得することでホストの設定を処理するため、手作業による依存関係のセットアップは完全に不要になります。

すでに Podman や Docker を使っているなら、頭の中のイメージはなじみのあるものです。モデルはコンテナイメージと同様に取得され、一覧表示され、削除されます。

前提条件

RamaLama をインストールする前に、次のものを用意してください:

  • Fedora システム(このガイドでは dnf を使う Fedora を使用します)
  • Podman をインストール済みであること(RamaLama のデフォルトのコンテナエンジンとして使用されます)
  • モデル保存用の十分なディスク容量(モデルのサイズは約 ~2GB から 10GB+ まで)
  • 小さめのモデルには少なくとも 8GB RAM。7B+ パラメータのモデルには 16GB+ を推奨します

インストール

Fedora では、RamaLama はデフォルトのリポジトリから直接利用できます:

sudo dnf install ramalama

インストール後、バージョンを確認します:

ramalama version

期待する出力:

ramalama version x.x.x

動作の仕組み

初回実行時、RamaLama はシステムの GPU 対応を確認し、GPU が見つからない場合は CPU にフォールバックします。次に、推論の依存関係がすべて組み込まれた適切な OCI コンテナイメージを取得し、モデル実行レイヤを支える llama.cpp も含めます。モデルはローカルに保存され、以降の実行でも再利用されるため、モデルごとに取得が発生するのは 1 回だけです。

モデルレジストリ

RamaLama は複数のレジストリからモデルを取得(pull)することをサポートしています。デフォルトのレジストリは Ollama ですが、トランスポートのプレフィックスを使って、サポートされている任意のソースからモデルを参照できます:

Registry Prefix
Ollama ollama:// または プレフィックスなし
Hugging Face huggingface:// または hf://
ModelScope modelscope:// または ms://
OCI Registries oci://
RamaLama Registry rlcr://
直接URL https://http://file://

モデルの取得と実行

Ollama から(デフォルト)

ramalama run granite3.1-moe:3b

これにより、Ollama レジストリから granite3.1-moe:3b モデルを取得し、対話型チャットセッションに入ります。初回実行時にはモデルがローカルストレージにダウンロードされ、その後の実行ではそれを再利用します。

Hugging Face から

ramalama run huggingface://MaziyarPanahi/Mistral-7B-Instruct-v0.3-GGUF

注: 一部の新しい Hugging Face モデルは、gguf_init_from_file_impl: failed to read magic エラーで失敗することがあります。これは llama.cpp とのフォーマット互換性の問題によるものです。その場合は、モデル名に「GGUF」を付けて検索し、同じモデルの事前変換された GGUF バージョンを Hugging Face 上で探してください。このケースでは、MaziyarPanahi/Mistral-7B-Instruct-v0.3-GGUF が互換性のある代替として機能しました。

便利なフラグ

コンテキストウィンドウサイズの設定;--ctx-size / -c

デフォルトでは、RamaLama はモデルのネイティブなコンテキスト長を上書きしません。llama3.1:8b のデフォルトは 131072 トークンで、KV キャッシュの確保には約 16GB が必要になり、多くの開発用マシンで扱える範囲を大きく超えます。

-c フラグを使ってコンテキストサイズを上限指定します:

ramalama run -c 16384 llama3.1:8b

16384 トークンのコンテキストサイズでは、llama3.1:8b に対して KV キャッシュは約 2GB 必要です。利用可能なメモリと目標モデルに対して適切な値を見つけるには、KV Cache Size Calculator を使えます。メモリに制約のあるマシンでは、このフラグがとても役立ちます。

温度の設定;--temp

温度はモデル出力のランダム性を制御します。デフォルトは通常 0.8 程度です。これを 0 に設定すると、モデルはより決定的になります:

ramalama run --temp 0 granite3.1-moe:3b

温度 0 は、事実ベースの Q&A や、出力を一定かつ再現可能にしたいベンチマークに有用です。ランダム性が下がる(幻覚が減るわけではない)点に注意してください。知識がモデルの学習データに存在しない場合、--temp 0 は単に一貫して間違った出力をするようになります。

推論バックエンドの選択;--backend

RamaLama はハードウェアに最適なバックエンドを自動検出しますが、明示的に上書きできます:

ramalama run --backend vulkan granite3.1-moe:3b   # AMD/Intel または CPU フォールバック
ramalama run --backend cuda granite3.1-moe:3b     # NVIDIA
ramalama run --backend rocm granite3.1-moe:3b     # AMD ROCm

GPU のないシステムでは、RamaLama は自動的に CPU 推論へフォールバックします。

デバッグ出力を有効化;--debug

--debug はグローバルフラグであり、サブコマンドの前に置く必要があります:

ramalama --debug run granite3.1-moe:3b

これは、RamaLama が実行する基盤となるコンテナコマンド、ハードウェア検出の手順、レジストリ取得の詳細を出力します。モデル互換性の問題、予期しない動作、ハードウェア検出の問題などのトラブルシューティングに役立ちます。

モデルの管理

ローカルに保存されているモデルを一覧表示:

ramalama list

実行せずにモデルを取得:

ramalama pull llama3.1:8b

ローカルストレージからモデルを削除します:

ramalama rm llama3.1:8b

APIとしてモデルを提供する

RamaLamaは、モデルをOpenAI互換のRESTエンドポイントとして公開できます:

ramalama serve granite3.1-moe:3b

これにより、既定でポート 8080 上にローカルサーバーが起動します。クライアント側の書き方を変えずに、OpenAI互換の任意のクライアントからそのまま接続できます。ローカルモデルをアプリケーション、RAGパイプライン、またはLangChainやLlamaIndexのようなツールに統合するのに便利です。

Web UI

ramalama serve を実行すると、既定で http://localhost:8080 にブラウザベースのチャットインターフェースが利用可能になります。無効にするには:

ramalama serve --webui off granite3.1-moe:3b

Web UIは llama.cpp のHTTPサーバーに組み込まれたインターフェースによって動作しており、クライアントコードを書かずにモデルと素早くやり取りできるようにします。

注意点

  • モデル形式の互換性: 一部のHugging Faceモデルは、RamaLamaで動作させるために事前に変換されたGGUF版を必要とします。迷った場合は、GGUF形式のモデルに従ってください。
  • メモリとコンテキストサイズ: メモリに制約のあるマシンで実行する前に、必ずモデルのデフォルトのコンテキスト長を確認してください。適切に上限を設けるには-cを使用します。
  • モデルサイズと精度: 小型モデル(3B)は高速で軽量ですが、ニッチな話題に関する知識が不足している可能性があります。事実の正確性を重視する場合、7B+モデルのほうが明らかに信頼性が高いです。
  • --debug フラグの位置: サブコマンドの前に指定する必要があります。つまりramalama --debug runであり、ramalama run --debugではありません。
  • RamaLamaはまだ積極的に開発中です: プロジェクトは進みが速いです。フラグ名、挙動、対応機能はバージョン間で変わることがあります。迷った場合はramalama --helpまたは公式ドキュメントを確認してください。

参考文献

広告