초보 개발자

Amazon NOVA さっさとさわってみた。 본문

카테고리 없음

Amazon NOVA さっさとさわってみた。

taehyeki 2024. 12. 6. 09:55

初めに


 

AWS re:Invent 2024で新しいGen AIモデル「Amazon Nova」が発表されました。

まだ公開されたばかりなので、実際に触れてみた人は多くないかもしれませんが、私もワークショップで少し触れる機会がありましたので、そのことについて軽くお話ししたいと思います。

 

 

※この記事は2024年12月6日時点で記載されていますので、今後内容が変更される可能性があります。

 

Amazon Novaとは


これは新しい世代の基盤モデル(FM)です。テキスト、画像、ビデオをプロンプトとして処理できる能力を持つAmazon Novaを活用することで、顧客は動画、チャート、ドキュメントを理解したり、動画やその他のマルチメディアコンテンツを生成したりするための生成AIアプリケーションを利用できます。

<参考URL> Amazon Novaについて

理解モデルはMicro、Lite、Pro、Premier(2025年度公開)で、クリエイティブコンテンツ生成モデルにはCanvas(画像)とReel(動画)が発表されました。

 

Microの方はテキストのみサポート、Lite, Proの方はイメージ、ビデオの方もサポートしていることが分かります。

また、イメージを生成できるCanvasと動画を生成するReelも発表されました。

 

日本語を含めて200個以上の言語もサポートしていますね。

 

一目でわかる内容としては、Microはテキストのみをサポートし、LiteおよびProは画像やビデオもサポートしていること、さらに、日本語を含む200以上の言語にも対応していることが挙げられます。

 

画像には記載されていませんが、Amazon Bedrockの機能(例えば、Amazon Bedrock Knowledge BasesやAmazon Bedrock Agents)を活用することで、独自のデータやアプリケーションと簡単に統合できます。

 

残念ながら現在、東京リージョンでは利用できません。利用可能なのは、US WESTおよびUS EASTリージョンのみです。

 

コストはMicroからPremierにかけて高くなりますが、現時点では各モデルのコストは公表されていません。

他のモデルとの性能比較を含む詳細な内容については、公式AWSサイトをご確認ください。

<参考URL> 公式AWSサイト

 

 

触ってみた


百聞は一見にしかずという言葉があるように、実際に触ってみたほうがわかりやすいですよね。

まず、CanvasとReelから行きましょう

 

 

Canvas

今回は会社の紹介やロゴを提供し、新たなロゴを作成してもらいたいと思います。

Canvasを利用して新しい画像を作成してもらうことも可能ですが、既存の画像を提供して変更してもらうこともできます。

今回は既存の会社のロゴを提供し、新しいロゴを作成してもらう形で進めたいと思います。

 

ロゴ

 

1024文字以内のプロンプトを入力できます。弊社の紹介を予約してプロンプトにつかってみます。

 

プロンプト:

以下の説明を基に、私たちの会社を表現する新しいロゴを作成してください。

参考として、既存のロゴや会社紹介を提供いたします。 当社はクラウドインテグレーションを専門とし、 技術向上に努めるプロフェッショナルな人材が集まっています。
高度な技術を持つエンジニアたちは知識を共有し、 エンタープライズ規模の課題に挑戦しています。
社名には、クラウド技術革新をリードするという目標が込められており、 各エンジニアがデジタルトランスフォーメーション(DX)に貢献しています。
私たちは、新しい技術を取り入れ、 ビジネスとクラウド業界を変革することで「ワクワク」を創造することを目指しています。

クラウドで「ワクワク」を感じながら、エンジニアとして共に成長し、情報発信を通じて社会に貢献します。

 

結果

 

5つのそれぞれのロゴを作ってくれました。

変なカタカナや漢字が使われていますが、クラウドを示す雲や英語の社名はちゃんと活用されていますね。

1番目のロゴは、なかなか良い感じに作ってくれたと思いますね。

 

Reel


今回も会社の紹介を提供し、会社の紹介映像を作成してもらいます。

Reelは現在、6秒の映像のみ作成できるようです。(少し長めの映像が欲しかったのですが、残念ですね。)

 

Canvasとは異なり、512文字以内でプロンプトを入力できます。

プロンプト:

 

当社はクラウドインテグレーションを専門とし、技術向上に努めるプロフェッショナルな人材が集まっています。

 

高度な技術を持つエンジニアたちは知識を共有し、エンタープライズ規模の課題に挑戦しています。社名には、クラウド技術革新をリードするという目標が込められており、各エンジニアがデジタルトランスフォーメーション(DX)に貢献しています。私たちは、新しい技術を取り入れ、ビジネスとクラウド業界を変革することで「ワクワク」を創造することを目指しています。クラウドで「ワクワク」を感じながら、エンジニアとして共に成長し、情報発信を通じて社会に貢献します。

 

この内容を基に、会社紹介映像を作成してください。

output1.mp4
3.05MB

 

すごい映像が作られました。まるでクラウドの神様のような動画ですね。

自分のプロンプトがうまくいっていないかもしれませんが、個人的な考えとしては、CanvasやReelの両方とも、まだ精度が高くないと感じます。

それでも、Bedrockを利用して簡単にAPIを実行できるのは本当に嬉しいことですね。

これからますます期待できるサービスになると思います。

 

Micro, Lite, Pro


次は理解モデルのMicro、Lite、Proを試してみたいと思います。

さっきのようにコンソール上でも利用可能ですが、今回はAPIを使って試してみました。

ソースコードの説明などは省略させていただきます。

ソースコード

 

今回利用したソースコードの一部です。簡単なコードでも実行できることが嬉しいですね。

モデルやメッセージのパラメータの値を変更することで、あの関数を流用できますね。

画像や映像をS3にアップロードし、そのURIを利用することも可能ですし、端末のものを利用することもできます。

後者の場合は、base64でエンコードして提供する必要があります。

  • call_nova: Amazon Novaを実行する。
  • get_base64_encoded_value: イメージやビデオをbase64でエンコードする。
import base64
import json
import boto3

client = boto3.client("bedrock-runtime", region_name="us-east-1")

def call_nova(model,
              messages,
              system_message=''
              max_tokens=512,
              temp=0.7,
              top_p=0.99,
              top_k=20):
    system_list = [{"text": system_message}]
    inf_params = {"max_new_tokens": max_tokens, "top_p": top_p, "top_k": top_k, 
                  "temperature": temp}
    request_body = {"messages": messages, 
                    "system": system_list, 
                    "inferenceConfig": inf_params
                   }
    response = client.invoke_model(modelId=model, body=json.dumps(request_body))
    model_response = json.loads(response["body"].read())
    return model_response, model_response["output"]["message"]["content"][0]['text']


def get_base64_encoded_value(media_path):
    with open(media_path, "rb") as media_file:
        binary_data = media_file.read()
        base_64_encoded_data = base64.b64encode(binary_data)
        base64_string = base_64_encoded_data.decode('utf-8')
        return base64_string

 

 

実行

各モデルの精度を比較してみたいと思います。

テキスト、イメージ、ビデオの順に行います。

※現在、イメージとビデオはMicroではサポートされていません。

 

テキスト

「地球はなぜ丸いのか、根拠と一緒に答えてほしい。」よいう質問を投げました。

  • Micro

地球が丸い理由は、重力によってです。すべての物体が中心に向かって引き合う力があり、地球もその影響を受けています。結果として、地球は内部からの圧力と重力のバランスによって、水と岩が均一に広がる形で丸くなります。これは科学的に観測され、宇宙空間から見た地球の円形が証明しています。

  • Lite

地球はなぜ丸いのでしょうか。科学的な根拠を説明します。

地球は重力によって丸い形をしています。物体は重力によって引き合わさり、可能な限り最小のエネルギー状態をとります。大きな天体の場合、この最小エネルギー状態は球形です。なぜなら、球形は等方性であり、すべての方向に等しい重力を経験するからです。この形は、地球の自転によっても影響を受け、赤道部分が膨らんだ扁球形になっています。

  • Pro

地球は重力によって丸い形を保っています。惑星が形成される際、物質が互いに引力で引き寄せられ、重力ポテンシャルエネルギーが最小になるように丸みを帯びた形になります。これは、地球の質量が均一に分布しているからです。

Microは簡単に説明されていて、誰でも直感的に理解しやすいです。一方、LiteとProは似ている点もありますが、専門的な内容が加わっていて、より詳しく深く説明されています。

 

画像

次はイメージですね。以下のイメージを提供し、LiteやProのモデルを使ってタイトルや説明を作成してもらい、それらを比較したいと思います。

「このイメージのタイトルを簡単な説明とともに3つ提案してほしい。」という質問を投げかけました。

 

 

  • Lite

 夕暮れの飛翔 」: 夕日が沈む空を、白い鳥が優雅に舞い、自由と希望を象徴しています。

 海の魂 」: 海と空の境界線に浮かぶ鳥が、自然の壮大さと静けさを示しています。

 夜明けの予感 」: 空が夜明けを予感させる色合いに変化し、鳥が新しい一日への遷移を暗示しています。

  • Pro

「海と空の境界線」: この作品は、鳥が海の上に飛ぶ様子を捉えており、海と空の境界線が鮮明に描かれています。鳥の翼が空に向かって広がり、海の波が静かに揺れている様子が表現されています。

「海の静寂」: この作品は、海の静かな波と空の美しい色彩が特徴です。鳥が空を飛ぶ様子は、海の静寂さをさらに強調しています。海と空のコントラストが美しく、穏やかな雰囲気を醸し出しています。

「鳥の舞踏」: この作品は、鳥が優雅に空を舞う様子を捉えています。海の波と空のグラデーションが背景となり、鳥の動きが際立っています。鳥の舞踏が海と空の調和を象徴しており、自然の美しさを称えています。

 

夕焼け、海、鳥などの言葉を提供していないにもかかわらず、それをキャッチできること自体がすごいと思いますが、さらにそれを分析してくれるのは驚きますね。

 

Liteは作品の全体的な印象や象徴的な感じですが、Proは作品の細かい部分や背景について、もっと詳しく説明していますね。

 

映像

test_video1.mp4
3.89MB

画像と同様に、以下の映像のタイトルと簡単な説明をもらってみますね。

 

 

  • Lite

「雪と荒野の旅」:雪が積もった荒野を進む車道の風景を紹介します。凍てついた大地と雪景色が一体となった美しい映像です。

 

「極寒の荒野の道」:極寒の冬に残雪が残る荒野の道を進む様子を捉えました。辺り一面に広がる雪と、荒々しい地形のコントラストが印象的です。

 

「孤独な荒野の旅路」:荒れ果てた荒野の道を進む旅の様子を描写します。雪と砂、そして岩が交錯する不思議な風景が広がっています。

  • Pro

「 氷河の谷の静かな道 」 : このビデオは、雪に覆われた風景を通る静かな土の道を示しています。背景には岩山と広大な空が見えます。自然の静寂と美しさを捉えています。

 

「 氷河地帯の荒涼とした景色 」 : このクリップは、氷河の谷の荒涼とした景色を捉えています。道は未舗装で、周囲は岩と雪に覆われています。これは厳しい自然環境を示しています。

 

「 雪原を抜ける未舗装の道 」 : このビデオは、広大な雪原を通る未舗装の道を示しています。周囲の風景は荒涼としていて、岩と雪で覆われています。自然の厳しさと美しさを映し出しています。

 

Liteはシーンの特徴を簡単に説明し、その場の印象を伝えています。Proは風景の詳細や自然の厳しさをもっと深く説明しており、より具体的なイメージを与えます。自然の美しさや荒々しさを強調している感じです.

 

 

 

最後に


今回、初めてBedrockを使用してみましたが、全体的に非常に便利で直感的に使いやすいと感じました。

 

Novaは、単なるテキスト生成だけでなく、ビデオなどのマルチメディアデータも処理できる点が非常に興味深いです。(さらに、音声ファイルもサポートされる予定)

個人的には、ショート動画やリールのような短い動画をアップロードすることで、動画の内容を要約してくれる機能として使っても便利かなと思いました。

 

今後が楽しみなモデルですね。新しい機能がリリースされた際には、またレビューしてみたいと思います。長文をお読みいただき、ありがとうございました。