みなさん、こんにちは。 AWS CLI が好きなテクニカルサポート課の市野です。
ラスベガスで年に一度開催される AWS 最大のイベント re:Invent が開催中ですが、日本から参加しているとキーノートが深夜になってしまうので、どうしても夜型になってしまいますね。
現地時間 12月3日の AM 8:00 から 11時前まで Matt Garman による CEO Keynote がありました。(当初は、現地時間 12月3日の AM 8:00 から 10:30 ってなってたんですけどね、だいぶオーバーランしてました)
なお、キーノートで発表されていたサービスの一覧は 2024 Japan AWS Jr. Champion の井出さんがまとめてくれていますので、ぜひご覧ください。
その中で、ゲスト枠で登場した Andy Jassy のパートで、AWS が提供する新たな基盤モデル Amazon Nova についての発表がありました。 本記事ではその Amazon Nova で利用できるうちのビデオ生成モデル Amazon Nova Reel を触ってみたブログを書いてみます。
公式発表
Amazon Nova ファミリーでできること
上記公式発表からの抜粋です
- Amazon Nova Micro, a text only model that delivers the lowest latency responses at very low cost.
- Amazon Nova Lite, a very low-cost multimodal model that is lightning fast for processing image, video, and text inputs
- Amazon Nova Pro, a highly capable multimodal model with the best combination of accuracy, speed, and cost for a wide range of tasks.
- Amazon Nova Canvas, a state-of-the-art image generation model.
- Amazon Nova Reel, a state-of-the-art video generation model.
(機械翻訳による和訳)
- Amazon Nova Micro は、非常に低コストで最低のレイテンシー応答を提供するテキストのみのモデルです。
- Amazon Nova Liteは、画像、ビデオ、テキスト入力を超高速で処理する非常に低コストのマルチモーダルモデルです。
- Amazon Nova Pro は、幅広いタスクに対応する精度、速度、コストの最適な組み合わせを備えた、高性能なマルチモーダル モデルです。
- 最先端の画像生成モデル、Amazon Nova Canvas。
- 最先端のビデオ生成モデル、Amazon Nova Reel。
Amazon Nova Reel への対応状況
執筆時点では、バージニア北部リージョンでのみ利用が可能となっています。
今回初めて動画を生成することのできる基盤モデルが AWS 内に実装されたことで、リージョンによって、Amazon Bedrock ページの左ペインのメニューにも変化が生まれています。
東京リージョン
オレゴンリージョン
バージニア北部リージョン
バージニア北部リージョンだけ「プレイグラウンド」に「Video」が追加されています。
やってみる
モデルアクセスの有効化
まずは、モデルアクセスを有効化する必要があります。
個人的にはモデルアクセスの有効化も CLI でできるとありがたいのですが、現時点でもマネジメントコンソールからしか行えないため、「特定のモデルを有効にする」から「Nova Reel」を選択し、有効化します。
執筆時点では即座にリクエストが承認され利用可能となりました。
プレイグラウンドでの操作
左ペインから「プレイグラウンド」の「Image / Video」をクリックし、Image generation playground ページへ遷移します。
「モデルを選択」をクリックして展開されるダイアログから、モデルプロバイダーに Amazon、モデルから Nova Reel を選択し、「適用」ボタンをクリックします。
上記、適用ボタンを押した際に、以下のダイアログが表示され、ビデオの生成には出力先として S3 バケットが必要であること、S3 のストレージ利用にはコストがかかること、コストの回避のためにはバケットの削除が必要であることの注意喚起がされます。
また、この「確認」ボタンをクリックすると裏側でバージニア北部リージョンに bedrock-video-generation-us-east-1-
の命名規則で始まる汎用バケットが一つ生成されていました。
(前述の注意喚起の中で、S3 バケット内の「オブジェクトを削除せよ」という書き方でなかったのは、バケットも生成されるからだと推察します。)
確認ダイアログを通過したのちに、プレイグラウンドでの入力画面に到達します。
何にしようか迷ったのですが、ふと、日曜夕方にかなりの数の人たちに、翌日からの日常を憂いてしまう感情を抱かせることで有名な国民的アニメのテーマソングのワンフレーズに近い言葉が降ってきました。
「魚を加えてフィッシャーズマーケットから脱走する猫の様子」
実行してから気づいちゃったのですが、変に「フィッシャーズマーケット」ってカタカナ英語にしているくせに普通に日本語で実行してしまいましたが、結果は如何に?
そして「加えて」ってなっちゃっていますし、本来「咥えて」ですねw
ビデオを生成しているので5分ほど待ってね、所定の S3 バケットに置くからね、的な案内が表示がされ、ここで待機します。
生成が完了した場面です。
その場での再生も、ダウンロードすることも可能です。
ここで AWS CLI が好きな私としては、この処理を CLI で実施した際にはどのようになるか試してみたくなるので、「Show history」の右にある三点リーダを縦にしたようなアイコンから API リクエストを見てみます。
AWS CLI での操作
先ほどのマネジメントコンソールでのプレイグラウンドでの実行結果から確認するに、以下のようなコマンドを実行することで処理をリクエストすることができそうです。
aws bedrock-runtime start-async-invoke \ --model-id amazon.nova-reel-v1:0 \ --region us-east-1 \ --model-input file://modelInput.json \ --output-data-config file://outputDataConfig.json \ --output json
ただ、合わせて AWS CLI Command Reference を確認しましたが、本日 12月4日 時点での AWS CLI v1(1.36.15) では start-async-invoke
のサブコマンドが用意されていなかったので、注意が必要です。(v2 ではすでに Command Reference にも掲載済みで 2.22.10 で実装されているようです。)
バージニア北部リージョンでは AWS CloudShell 環境での AWS CLI バージョンの最新化を仕込んでいなかったので、福島さんが以前書いてくれているブログを参考に最新化します。
その上で、--generate-cli-skeleton
をしてみると、以下のような出力が得られます。
aws bedrock-runtime start-async-invoke --generate-cli-skeleton { "clientRequestToken": "", "modelId": "", "modelInput": {}, "outputDataConfig": { "s3OutputDataConfig": { "s3Uri": "", "kmsKeyId": "", "bucketOwner": "" } }, "tags": [ { "key": "", "value": "" } ] }
modelInput
のあたりが全く手がかりがないことに一抹の不安を覚えながら、適宜 Command reference も参照しつつ、以下のような json ファイルを組み立ててみます。
cat << EOF > input-for-nova-reel.json { "text": "魚を加えてフィッシャーズマーケットから脱走する猫の様子" } EOF
上記ヒアドキュメントで作成した input-for-nova-reel.json を利用して、以下の要領で何度か繰り返しました。
aws bedrock-runtime start-async-invoke \ --model-id amazon.nova-reel-v1:0 \ --region us-east-1 \ --model-input file://input-for-nova-reel.json \ --output-data-config "s3OutputDataConfig={s3Uri=s3://bedrock-video-generation-us-east-1-3chkwn}" \ --output json
すると、以下のようなエラーが返ってきました。
# 上記の input-for-nova-reel.json のまま実行した場合 An error occurred (ValidationException) when calling the StartAsyncInvoke operation: Malformed input request: #: required key [taskType] not found, reformat your input and try again. # 上記エラーを受けて、"taskType": "Video", を input-for-nova-reel.json に足してみた場合 An error occurred (ValidationException) when calling the StartAsyncInvoke operation: Malformed input request: #: required key [textToVideoParams] not found, reformat your input and try again. # 上記エラーを受けて text としていたキーを textToVideoParams に変更した結果 An error occurred (ValidationException) when calling the StartAsyncInvoke operation: Malformed input request: #: required key [videoGenerationConfig] not found, reformat your input and try again.
この時点での input-for-nova-reel.json は以下のようなものとなっていますが、videoGenerationConfig の中身が怪しいのと、textToVideoParams が expected type: JSONObject, found: String, reformat your input and try again. と言われたりするなど、手探りの限界を迎えたので、一旦ここまで。
cat << EOF > input-for-nova-reel.json { "taskType": "Video", "textToVideoParams": "魚を加えてフィッシャーズマーケットから脱走する猫の様子", "videoGenerationConfig": [ "seed:0" ] } EOF
いろいろ探ってみたのですが、Amazon Bedrock Runtime の API Reference にも記載がまだのようなので、一旦は公式ドキュメントの充実を待ちたいと思います。
ただ、ドキュメントを見ている時に Amazon Nova Reel prompting best practices の存在を確認し Image-based video generation prompts (要は画像ベースのビデオ生成のプロンプトってことですね)や Camera controls といったドキュメントの用意があることを確認しましたので、かなりクリエイティブな利用ができるようです。
出力された動画
やはり、日本語だったのがよくなかったのか、「フィッシャーズマーケット」でもないし、「脱走する」そぶりもないし、魚は猫に吸い込まれてるし、みたいな感じですが、簡単なプロンプトで動画の生成ができました。
これまで、他社の AI で動画を生成できるものは多くありましたが、AWS の中で完結できる、透かしやコンテンツモデレーションなど安全で責任ある AI の使用のための組み込みコントロールを AWS の基準に則って利用できる点に優位性があるかもしれませんね。
この記事がどなたかの参考になれば幸いです。
ではまた!
市野 和明 (記事一覧)
マネージドサービス部・テクニカルサポート課
お客様から寄せられたご質問や技術検証を通じて得られた気づきを投稿していきます。
情シスだった前職までの経験で、UI がコロコロ変わる AWS においては GUI で手順を残していると画面構成が変わってしまって後々まごつくことが多かった経験から、極力変わりにくい AWS CLI での記事が多めです。
X(Twitter):@kazzpapa3(AWS Community Builder)