はじめに
こんにちは。 セーフィー株式会社 先行開発Gの井上です。 今回は、タイトルの通り llama.cpp を使用して MiniCPM-o-2_6 をローカル環境で動作させる方法について解説します。ローカルでの動作環境を簡単に構築できる手順を紹介しますので、ぜひ参考にしてください。
最近のマルチモーダルAIの発展に伴い、ローカル環境でも手軽に動作させたいというニーズが増えています。MiniCPM-o-2_6 はオープンソースのマルチモーダルAIであり、ローカルでの実行も可能です。本記事では llama.cpp を使用し、Windows 11 環境で MiniCPM-o-2_6 を動かす手順をまとめました。
また、環境構築に CMake を利用することで、ビルドや依存関係の管理が簡単になり、手軽にセットアップできる点も魅力です。CMake を活用することで、複雑な設定をすることなくスムーズに環境を構築できるため、本記事の方法を採用しました。
用語解説
llama.cppとは?
llama.cpp は、オープンソースの軽量な LLM(大規模言語モデル)推論フレームワークであり、Meta社が公開した LLaMA(Large Language Model Meta AI)シリーズのモデルをローカル環境で実行するために開発されました。このフレームワークは、特に低リソース環境向けに最適化されており、GPU を使用しなくても CPU 上で高いパフォーマンスを発揮できるのが特徴です。llama.cpp は C++ で実装されており、Windows、Linux、macOS などの主要なプラットフォームで利用可能です。
MiniCPM-o-2_6とは?
MiniCPM-o-2_6 は、オープンソースのマルチモーダル大規模言語モデル(MLLM)であり、テキスト、画像、音声などの複数のモダリティを処理することが可能です。このモデルは、エッジデバイスでの運用にも適した軽量な設計がされており、比較的低スペックなマシンでも動作できるのが特徴です。また、OCR(光学文字認識)機能が強化されており、最大1344×1344ピクセルの画像を処理可能なため、画像解析や視覚情報の理解にも活用できます。
llama.cpp はローカルで LLM を実行する際に非常に有効なツールであり、特に 軽量・シンプルな導入が可能 な点が優れています。そのため、本記事では llama.cpp を使用して MiniCPM-o-2_6 を動作させる方法を選択しました。
CMakeとは?
CMake は、プログラムのビルドを管理するためのクロスプラットフォームツールです。C++ などのプロジェクトでコンパイル・ビルドを簡単に行うために使用されます。
CMakeを使用する利点
CMake を使用する最大の利点は、クロスプラットフォーム対応であり、Windows、Linux、macOS など異なる OS でも統一的なビルド環境を提供できる点です。また、柔軟なビルド設定が可能で、CMakeLists.txt を記述することで、複雑なプロジェクトの管理が容易になります。
さらに、CMake は依存関係の管理にも優れており、外部ライブラリを簡単に導入し、統一されたビルド環境を構築することができます。これにより、異なる開発者や異なる環境でのビルドの再現性が向上し、開発の効率化が期待できます。
また、CMake を使用することで、ビルドの自動化や再利用性が高まり、同じ設定を異なる環境でも適用できるため、複数のプロジェクトや開発チーム間での統一した開発環境を維持しやすくなります。加えて、CMake は Visual Studio、Makefile、Ninja など、多くのビルドシステムとの互換性があり、環境に応じたビルドが容易に行える点も大きな利点です。
PCスペック・環境
CPU: Intel(R) Core(TM) i7-1355U 1.70 GHz
メモリ: 32.0 GB
OS: Windows 11 64bit
エディタ:VisualStudioCode
実装の前準備
CMakeの導入方法(Windows 11基準)
CMake公式サイト から最新のバージョンをダウンロード
インストーラーを実行し、システム環境変数にパスを追加
ここで自分は「Add CMake to the system PATH for the All user」を選択しました。保存先を聞かれるので、任意の好きな場所を選択
インストール完了後、ターミナルで
cmake --version
を実行し、正常にインストールされたことを確認cmake version 3.31.4(筆者の環境)と出ました!
これでCmakeの準備は完了です!
MiniCPM-o-2_6の用意
今回必要なモデル
- Model-7.6B-Q4_K_M.gguf
- mmproj-model-f16.gguf
モデルの導入手順
HuggingFaceに上記MiniCPM-o-2_6モデルのggufファイルが公開されているのでダウンロードします
huggingface.co
上記サイトへアクセスします
赤枠で囲ってあるFiles and versionを押下します
モデル一覧が表示されます。
ここで、今回必要なモデル項に記載している2つのモデルをダウンロードします。ダウンロード後、どこか分かり易い場所へ一時保管しておきます
llama.cppの導入方法
下準備が全て完了したので、ここからはいよいよllama.cppの導入方法について解説していきます! github.com
といっても、llama.cppのgithubからクローンしてCmakeを実行するだけで構築できちゃいますので、作業自体は下準備項よりも早く終わります
Windows 11環境での導入手順
ローカルに作業用ディレクトリを作成します。
mkdir llama_test cd llama_test
作成したllama_testディレクトリ上でllama.cpp のリポジトリをクローン。
完了後、llama.cppディレクトリへ移動します。git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp
llama.cppディレクトリ上で以下コマンドを入力し、CMakeを使用してビルドを行います
cmake -B build cd build cmake --build . --config Release
※cmake --build . --config Release はかなり時間がかかります
上記コマンドを上から順に実行すると、llama.cppに「build」フォルダが作成されます。
モデルの準備項で用意しておいた2つのモデルをbuildフォルダに格納します。
格納場所はどこでもOKです。自分は以下の場所にモデル格納用のディレクトリを作成し、格納しました。llama.cpp/build/bin/models/MiniCPM-o-2_6/
画像保管場所を用意します。
次項にも記載していますが、画像を解析させるために画像のパスを教えてあげる必要があります。任意の場所に画像用フォルダを作成し、指定できるようにしておきましょう。筆者は以下のように画像保管フォルダを作成しました。 llama.cpp/build/bin/images/
これで実行準備が全て完了しました!次項から早速触ってみましょう!
実行してみる
実際にモデルを動作させるために、以下のコマンドを実行します。
※筆者はbuildディレクトリ上で実行しているので、以下のパス構成になっています。逐次書き換えてください
./bin/Release/llama-minicpmv-cli -m **./bin/models/MiniCPM-o-2_6/Model-7.6B-Q4_K_M.gguf** --mmproj **./bin/models/MiniCPM-o-2_6/mmproj-model-f16.gguf** -c 8192 --temp 0.7 --top-p 0.8 --top-k 100 --repeat-penalty 1.05 --image **./bin/images/001.png** -p "how many people are in the image" --n_predict 8192
今回解析してもらう画像は次の2つです
実行結果
① Developers Summit 2024 Summerでの集合写真
2024年にブース出展したDevelopers Summit 2024 Summerでの集合写真です!
この時のブース出展では、Safie OneやSafie GO 360、Safie Pocket2 Plusをブースに展示していました。
展示したプロダクトについても是非ご確認ください!
所要時間
1分以内(50秒程)
質問文
how many people are in the image
回答
There are four people in the image. They appear to be standing behind a booth, possibly promoting or demonstrating something related to 'safie'. Each person is holding up pamphlets with Japanese text and pictures of owls on them. The setting includes posters and banners about 'safie' technology, suggesting it might be an event or exhibition where they are showcasing their product or service.
The individuals seem engaged in presenting information about the company's offerings, as evidenced by the materials they're holding and the visual aids set up around them. There is also a table with more pamphlets available for visitors to take. The overall atmosphere indicates a professional presentation aimed at informing attendees about 'safie' technology or services.
In summary:
- Four people are visible in the image.
- They appear to be part of a promotional event for their company, possibly called 'safie'.
- Their actions suggest they're explaining features related to owls and video management.
画像には4人が写っています。彼らはブースの後ろに立って、おそらく「safie」に関連した何かを宣伝またはデモンストレーションしているようです。それぞれが日本語の文字とフクロウの絵が描かれたパンフレットを掲げている。この設定には「セーフィー」テクノロジーに関するポスターやバナーが含まれており、自社の製品やサービスを紹介するイベントや展示会である可能性があることを示唆しています。
彼らが手にしている資料や周囲に設置された視覚補助具からわかるように、各個人は同社の製品に関する情報の提示に熱心に取り組んでいるように見えます。訪問者が手に取れるパンフレットが置かれたテーブルもあります。全体的な雰囲気は、参加者に「安全」テクノロジーやサービスについて知らせることを目的とした専門的なプレゼンテーションを示しています。
要約すれば:
- 画像には 4 人が表示されます。
- 彼らはおそらく「safie」と呼ばれる、自社のプロモーションイベントの一部であるようです。
- 彼らの行動は、フクロウとビデオ管理に関連する機能を説明していることを示唆しています。
② セーフィーが掲げる映像プラットフォームの概念図
セーフィーの事業紹介にも掲載していますので、興味があれば以下サイトも確認してみてください
safie.co.jp
所要時間
2分程
質問文
describe the image
回答
The image is a detailed infographic in Japanese, featuring various applications of video data. The central element is the logo and name "safie," which appears to be a platform for integrating diverse analysis applications related to video data.
Surrounding this central theme are several circular images with corresponding text labels that illustrate different use cases:
- Restaurants: There's an image showing tables in a dining area, possibly indicating how video data can help monitor customer behavior or optimize operations.
- Hospitals: An image of hospital beds suggests the application could involve patient monitoring and facility management within medical settings.
- Street View / Tourism Locations: This includes images that might represent tourist spots or public spaces where surveillance or crowd analysis is beneficial.
Additionally, there are other applications mentioned:
- Business Facilities
- Crime Prevention
- Construction Sites
- Flood Monitoring
The infographic also mentions practical uses like sending out educational videos and calculating parking fees based on footage. Each application area has a visual representation to help understand its context better within the overall platform's capabilities.
Overall, it appears that "safie" is designed as an integrated solution for various industries looking to utilize video data efficiently across multiple sectors such as hospitality, healthcare, security, education, and more.
画像は、映像データのさまざまなアプリケーションを紹介する、日本語の詳細なインフォグラフィックです。中心となるのは「safie」というロゴと名前で、映像データに関連する多様な解析アプリケーションを統合するプラットフォームと思われる。
この中心テーマの周囲には、さまざまな使用例を示す対応するテキスト ラベルが付いたいくつかの円形の画像があります。
- レストラン: ダイニング エリアのテーブルを示す画像があり、映像データが顧客の行動の監視や業務の最適化にどのように役立つかを示している可能性があります。
- 病院: 病院のベッドの画像は、このアプリケーションに医療現場での患者の監視と施設管理が含まれる可能性があることを示唆しています。
- ストリートビュー / 観光地: これには、監視や群衆分析が有益な観光地や公共スペースを表す可能性のある画像が含まれます。
さらに、他のアプリケーションについても言及されています。
- 商業施設
- 防犯
- 建設現場
- 洪水監視
インフォグラフィックでは、教育映像の送信や映像に基づいた駐車料金の計算などの実用的な用途についても言及しています。各アプリケーション領域には視覚的な表現があり、プラットフォーム全体の機能内でそのコンテキストをよりよく理解できるようになります。
全体として、「safie」は、ホスピタリティ、ヘルスケア、セキュリティ、教育などの複数の分野にわたって映像データを効率的に活用したいと考えているさまざまな業界向けの統合ソリューションとして設計されているようです。
最後に
本記事では、ローカル環境で llama.cpp を使用して MiniCPM-o-2_6 を動作させる方法 について解説しました。
ローカルで LLM を実行する方法を探している方にとって、有益な情報になれば幸いです。
セーフィーではエンジニアを積極的に募集しています。どのような職種があるのか気になる方はこちらをご覧ください!
カジュアル面談から受け付けておりますので、気軽に応募いただければと思います! 皆様のご応募、心よりお待ちしております!
最後までお読みいただき、ありがとうございました