はじめに
InternLM-XComposerは、InternLMチームによって開発され、GitHubでホストされているオープンソースのグラフィカル・マルチモーダル・マクロモデリング・プロジェクトで、InternLM言語モデルに基づいており、テキスト、画像、ビデオなどのマルチモーダルデータを処理することができ、グラフィック・オーサリング、画像理解、ビデオ解析の分野で広く使用されています。このプロジェクトは、最大96Kの長いコンテクストをサポートし、4Kの高解像度画像を処理し、7BのパラメータだけでGPT-4Vに匹敵する性能で、きめ細かいビデオを理解する能力で知られている。コード、モデルの重み、詳細なドキュメントは、マルチモーダルAIに関心のある研究者、開発者、ユーザー向けにGitHubからアクセスできる。2025年2月現在、プロジェクトはInternLM-XComposer-2.5とOmniLiveを含むいくつかのバージョンをリリースし、マルチモーダルインタラクション体験を継続的に最適化している。
機能一覧
- 超ロングコンテクスト出力サポート:複雑なタスクのために最大96Kの混合グラフィックコンテンツを処理します。
- 高解像度画像の理解:336ピクセルから4Kまでの画像解析をクリアなディテールでサポート。
- きめ細かなビデオ理解:ビデオをマルチフレーム画像に分解し、動的なディテールを捉える。
- グラフィック作成:指示に従ってグラフィック記事やウェブコンテンツを作成する。
- 複数画像対話の複数ラウンド:連続対話分析のための複数画像入力をサポート。
- オープンソースモデルのサポート:二次開発を容易にするために、様々なモデルの重みと微調整コードを提供する。
- マルチモーダルストリーミングインタラクション:OmniLiveバージョンは、長時間のビデオとオーディオ処理をサポートしています。
ヘルプの使用
InternLM-XComposerはGitHubのオープンソースプロジェクトです。以下は、ユーザーがすぐに使い始められるように、詳細な操作ガイドです。
設置プロセス
1.環境準備
-
- デバイスにPython 3.9以上がインストールされていることを確認してください。
- NVIDIA GPUとCUDAサポート(CUDA 11.xまたは12.x推奨)が必要です。
- Gitをインストールしてコードベースをクローンする。
2.プロジェクトのクローン化
ターミナルで以下のコマンドを実行し、プロジェクトをローカルにダウンロードする:
git clone https://github.com/InternLM/InternLM-XComposer.git cd InternLM-XComposer
3. 仮想環境の構築 Condaや仮想環境ツールを使って依存関係を分離する:
conda create -n internlm python=3.9 -y internlm を起動する
4. 依存関係のインストール 公式ドキュメントに従って、必要なライブラリをインストールする:
pip install torch==2.0.1+cu117 torchvision===0.15.2+cu117 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu117 pip install transformers==4.33.2 timm==0.4.12 sentencepiece==0.1.99 gradio==4.13.0 markdown2==4.4.10 xlsxwriter==3.1.2 einops
- オプション:flash-attention2をインストールしてGPUメモリを節約する:
pip install flash-attn --no-build-isolationをインストールする。
5. モデルウェイトのダウンロード このプロジェクトは、例えばハギング・フェイスから事前に訓練されたモデルをダウンロードすることをサポートしている:
model = AutoModel.from_pretrained('internlm/internlm-xcomposer2d5-7b', torch_dtype=torch.bfloat16, trust_remote_code=True).cuda().eval()
6. インストールの確認 サンプルコードを実行して、環境が正常かどうかをテストする:
python -m torch.distributed.run --nproc_per_node=1 example_code/simple_chat.py
主な機能
1.グラフィック制作
- 機能紹介ユーザーの指示に基づいて、記事やウェブページなどのテキストや画像を含むコンテンツを生成します。
- 手続き::
- インプットの準備:文章を書く(例:「旅行についての記事を、3枚の写真を含めて書きなさい」)。
- コードを実行する:
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('internlm/internlm-xcomposer2d5-7b', trust_remote_code=True).cuda().eval()
tokenizer = AutoTokenizer.from_pretrained('internlm/internlm-xcomposer2d5-7b', trust_remote_code=True)
query = "3つの画像を含む旅行に関する記事を書く"
response, _ = model.chat(tokeniser, query, do_sample=False, num_beams=3)
print(response)
- 出力:モデルはグラフィックとテキストの混合コンテンツを生成し、画像の説明は自動的にテキストに埋め込まれる。
2.高解像度画像の理解
- 機能紹介高解像度の画像を分析し、詳細な説明を提供します。
- 手続き::
- イメージの準備:イメージファイルをローカルディレクトリ(例えば
例/dubai.png
). - コードを実行する:
query = "この画像を詳細に分析する"
image = ['examples/dubai.png'] とする。
with torch.autocast(device_type='cuda', dtype=torch.float16):
response, _ = model.chat(tokeniser, query, image, do_sample=False, num_beams=3)
print(response)
- 出力:このモデルは、例えば建物や色などの詳細について、画像の内容の詳細な説明を返す。
3.ビデオ分析
- 機能紹介ビデオフレームを分解し、内容を記述する。
- 手続き::
- 準備ビデオ: 例となるビデオをダウンロードする。
liuxiang.mp4
). - オムニライブ版をご利用ください:
from lmdeploy import pipeline
pipe = pipeline('internlm/internlm-xcomposer2d5-ol-7b')
video = load_video('liuxiang.mp4')
query = "この動画の内容を記述する"
response = pipe((query, video))
print(response.text)
- 出力結果:アクションやシーンなど、ビデオフレームの詳細な説明を返す。
4.複数回のマルチチャート対話
- 機能紹介連続対話のためのマルチピクチャー入力に対応。
- 手続き::
- 複数の画像を用意する(例
車1.jpg
,車2.jpg
,車3.jpg
). - コードを実行する:
query = "画像1 ; 画像2 ; 画像3 ; これら3台の車の長所と短所を分析する"
images = ['例/cars1.jpg', '例/cars2.jpg', '例/cars3.jpg']。
response, _ = model.chat(tokeniser, query, images, do_sample=False, num_beams=3)
print(response)
- 出力:モデルは、各写真に対応する車両特性を1つずつ分析する。
ほら
- ハードウェア要件少なくとも24GBのGPUメモリを推奨します。ローエンドのデバイスには4ビット量子化バージョンをお試しください。
- デバッグのヒントビデオメモリが不足する場合は、ビデオメモリを下げてください。
hd_num
パラメーター(デフォルトは18)。 - 地域支援GitHubのIssuesページでは、よくある質問やフィードバックを受け付けています。
以上の手順で、InternLM-XComposerを簡単にインストールし、研究開発に利用することができます。