見出し画像

【CoDi】GPT-4V超え!?文章から画像、動画、音声を同時に作れるマルチモーダルAI

みなさん、生成AIを使って複数のデータを出力する際に何度もプロンプトを入力するのって面倒ではないでしょうか?

CoDiを使えば、たったひとつのプロンプトから複数の異なる種別のデータを生成することができますよ!

CoDiは大手IT企業であるMicrosoftから発表された新しい生成AIモデルで、他の生成AIとは違い、テキスト、画像、動画、音声など異なるモダリティ(データ種別)を同時に生成することができるマルチモーダルAIモデルなんです。

簡単に言ってしまえば、一言投げかければ画像と動画とBGMが一発で生成できるということ。

いやいや、そんな都合のいいことができるわけない?

本記事ではCoDiの導入方法からデータの生成まで細かく解説していますので、この記事を見ながら実際に試していただければ約1時間でCoDiのすごさを体験してもらえます。

ぜひ最後までご覧ください!

CoDiの概要

CoDi(Composable Diffusion)はMicrosoftが開発したマルチモーダルAIモデルです。

もともとMicrosoftが進めていたi-Codeプロジェクトの一つで、その中の「i-Code-V3」がCoDiと呼ばれています。

そんなCoDiの特徴は以下の3つです

・マルチモーダルAIモデル
CoDiと従来の生成AIモデルが違うところは同時に複数の異なるデータを出力できるという点です。

例えば、画像系の生成AIだとテキストからイラストや画像を作りますが、CoDiはそれに加え、動画や音楽も一つのテキストから生成することができるのです。

・多岐にわたる活用法
例えば耳の不自由な人のためにビデオや画像のキャプションを生成することができたり、目の不自由な人のために、音声ガイドやテキストの要約を生成したりなど、体が不自由な人のためにアクセシビリティの向上に活用できます。

また、教育現場では生徒が知っていることと、達成したいことに合わせて学習コンテンツを生成することも可能になります。

・オープンソースソフトウェア
CoDiはGitで公開されており、オープンソースソースソフトウェアとなっています。
ライセンスはMITライセンスですので商用利用も可能です。

※ライセンスに関しては2023年10月現在の情報となりますので、利用する際はその都度ご確認ください。

では早速CoDiを使ってみましょう!

CoDiの導入方法

今回はGoogle ColabPro+でCoDiを試してみました。

CoDiのマニュアルではcondaを使い、Python3.8で環境構築をしていますがColabのPython 3.10.12でも動作を確認しました。※2023年10月現在

なお、無料版のColabだとシステムRAMが足りなくてクラッシュしてしまいますのでご注意ください。

Gitからファイルのクローン

まず、GitからCoDiのファイル一式をクローンします。

!git clone https://github.com/microsoft/i-Code.git

ファイル構成は下記のようになるはずです。

ディレクトリの移動

次に、CoDiが格納されている「i-Code-V3」のディレクトリへ移動します。

※初期値の/contentにいない場合は、pwdコマンドで現在のディレクトリを確認し移動を行ってください。

cd i-Code/i-Code-V3/

必要なパッケージのインストール

i-Code-V3配下にあるrequirement.txtを読み込んで必要なパッケージのインストールを行います。

!pip install -r requirement.txt

インターフェースのダウンロード

/checkpointsの中に必要なファイルをダウンロードします。

なお、Colab上ではスペックの都合上FP16でしか動作ができなかったので、fp16対応のインターフェースをwgetコマンドで落としてきます。

!wget https://huggingface.co/ZinengTang/CoDi/resolve/main/checkpoints_fp16/CoDi_encoders.pth -P checkpoints/

!wget https://huggingface.co/ZinengTang/CoDi/resolve/main/checkpoints_fp16/CoDi_text_diffuser.pth -P checkpoints/

!wget https://huggingface.co/ZinengTang/CoDi/resolve/main/checkpoints_fp16/CoDi_audio_diffuser_m.pth -P checkpoints/

!wget https://huggingface.co/ZinengTang/CoDi/resolve/main/checkpoints_fp16/CoDi_video_diffuser_8frames.pth -P checkpoints/

モデルのロード

下記コマンドを実行し、モデルをロードします。

初期値では「fp16=False」となっていますが、今回はFP16を使用するので「fp16=True」に変更しています。

import os

from core.models.model_module_infer import model_module

model_load_paths = ['CoDi_encoders.pth', 'CoDi_text_diffuser.pth', 'CoDi_audio_diffuser_m.pth', 'CoDi_video_diffuser_8frames.pth']

inference_tester = model_module(data_dir='checkpoints/', pth=model_load_paths, fp16=True) # turn on fp16=True if loading fp16 weights

inference_tester = inference_tester.cuda()

inference_tester = inference_tester.eval()

モデルのロードが終われば準備完了です!

なお、メモリが足りないとこのモデルのロード時にクラッシュしてしまいます

Google ColabPro+プランでもそのままだとメモリが足りなくなってしまうので、ハイメモリに変更するのを忘れないようにしてください。
モニタリングしていると、モデルのロード中にシステムRAMの使用量が約22GBまで上がっていました。
ロードが終わるとシステムRAMが約13GB、GPURAMが約11GBという使用量になっています。

もし、ローカルで開発環境を整えようと思っている方はシステムRAM及びGPU RAMが上記以上の容量を搭載しているマシンを用意する必要がありそうです。

CoDiを実際に使ってみた

これ以降は、以下の記事からご確認ください。

他の記事もご覧になりたい方は、こちらをご覧ください。

この記事が気に入ったらサポートをしてみませんか?