🚀 ニフティ’s Notion

【前半】クラウドサービスで利用できる基盤モデルと活用事例

クラウドサービスで利用できる基盤モデル

先ほども説明した通り、AWSにはBedrock、GoogleにはVertexAI、AzureにはAzure OpenAI Serviceがあり、それぞれ大規模な基盤モデルを利用することができます。

今回はAWSで利用できる基盤モデルについて少し具体的に説明をしていきます。

AWSのAmazon Bedrockでは、単一の API を介して大手 AI 企業からの高性能な基盤モデルを使用することができます。

Amazon Bedrockで使用することのできるモデルは以下のようになっています。

Anthropic
Model Input Modalities Output Modalities
Claude Text Text, Chat
Claude Instant Text Text, Chat
Claude 3 Sonnet Text, Image Text, Chat
Claude 3 Haiku Text, Image Text, Chat
Claude 3 Opus Text, Image Text, Chat
Meta
Model Input Modalities Output Modalities
Llama 2 Chat 13B Text Text, Chat
Llama 2 Chat 70B Text Text, Chat
Llama 2 13B Text Text
Llama 2 70B Text Text
Llama 3 8B Instruct Text Text, Chat
Llama 3 70B Instruct Text Text, Chat
Amazon
Model Input Modalities Output Modalities
Titan Text G1 - Express Text Text, Chat
Titan Text G1 - Lite Text Text
Titan Image Generator G1 Text, Image Image
Titan Embeddings G1 - Text Text Embeddings
Titan Embeddings Text V2 Text Embeddings
Titan Multimodal Embeddings G1 Text, Image Embeddings
AI21 Labs
Model Input Modalities Output Modalities
Jurassic-2 Mid Text Text, Chat
Jurassic-2 Ultra Text Text, Chat
Cohere
Model Input Modalities Output Modalities
Command Text Text
Command Light Text Text
Command R Text Text, Chat
Command R+ Text Text, Chat
Embed English Text Embeddings
Embed Multilingual Text Embeddings
Mistral AI
Model Input Modalities Output Modalities
Mistral 7B Instruct Text Text
Mixtral 8X7B Instruct Text Text
Mistral Large Text Text
Stability AI
Model Input Modalities Output Modalities
Stable Diffusion XL Text, Image Image

引用: https://qiita.com/zumax/items/ad61c2ae4cb767aff05f

また、利用することのできるモデルはリージョンによって違いがあります。

例えば、Anthropicの提供している大規模言語モデルはus-west-2 ( 米国西部 (オレゴン)  )とap-northeast-1 (東京)で以下のようになっています。

us-west-2 ( 米国西部 (オレゴン)  )で利用できるモデル

Anthropic モデル 入力トークン 1,000 個あたりの価格 出力トークン 1,000 個あたりの価格
Claude Instant 0.00080 USD 0.00240 USD
Claude 2.0/2.1 0.00800 USD 0.02400 USD
Claude 3 Opus 0.01500 USD 0.07500 USD
Claude 3 Sonnet 0.00300 USD 0.01500 USD
Claude 3 Haiku 0.00025 USD 0.00125 USD

※Claude 3 Opusは 現在米国西部 (オレゴン) リージョンのみ

ap-northeast-1 (東京)で利用できるモデル

Anthropic モデル 入力トークン 1,000 個あたりの価格 出力トークン 1,000 個あたりの価格
Claude Instant 0.00080 USD 0.00240 USD
Claude 2.0/2.1 0.00800 USD 0.02400 USD

上の表で入力トークン 1,000 個あたりという言葉が出てきましたがこのトークンについて軽く説明をしていきます。

トークンとは

処理するテキストの基本単位のことです。

(引用: https://www.goatman.co.jp/media/chatgpt-token/ )

💡
超ざっくり理解

日本語は1文字1トークン、英語は1単語1トークンぐらい。

検証

Bedrockで複数のモデルに対して同じ文章を入力したとき、入力トークン数は以下のようになりました。

入力した文章(109文字)

以下の質問に日本語で回答してください

日本語の場合、トークナイザーによって分割されるのは、単語というよりも文字単位のように感じます。単語で分割することができる英語のモデルとは、仕組みがかなり異なるように思えますが、同じモデルで問題なく動作するのでしょうか?
モデル Jurassic-2 Mid Claude 3 Haiku Llama 3 8B Instruct
入力トークン数 116 115 92

日本語の場合、大体文字数前後

備考:レスポンス

Jurassic-2 Mid

分割される単語の数が少ない場合は、単語単位より文字単位にするか
分割される単語の数が多い場合は、単語単位にするか
トークナイザーによって分割される単語の数が少ない場合は、単語単位より文字単位にするか
トークナイズード単語数が多い場合は、単語単位にするか
分割される単語の数が少ない場合は、単語単位より文字単位にするか
分割される単語の数が多い場合は、単語単位にするか
トークナイザード単語数が多い場合は、単語単位にするか
分割される単語の数が少ない場合は

Claude 3 Haiku

日本語におけるトークナイザーの動作は、英語とは大きく異なります。日本語では単語よりも文字単位での分割が一般的で、これは日本語の言語的特徴によるものです。

具体的には、日本語は英語のようなスペースで単語が区切られておらず、助詞や接続詞などの機能語が豊富なため、単語境界の判断が難しくなります。そのため、日本語のトークナイザーは文字単位での分割を行うのが一般的です。

一方、英語のトークナイザーは単語単位での分割に最適化されており、英語の言語的特徴に合わせて設計されています。

しかし、近年の自然言語処理技術の発展により、同じモデルを用いて日本語でも問題なく動作するようになってきました。これは、モデルが言語の特徴を柔軟に学習できるようになったことによるものです。

つまり、日本語のトークナイザーは英語とは異なる仕組みを持っていますが、適切な前処理とモデル設計により、同じモデルを用いて日本語の処理も可能になっているのが現状です。

Llama 3 8B Instruct

日本語のトークナイザーは、実際には単語単位ではなく、文字単位や音素単位で分割を行うことが多くあります。日本語には、連濁や濁音などの音韻的な特徴があり、単語の境界が明確ではない場合があります。したがって、日本語のトークナイザーは、文字や音素の連続性を考慮して分割を行うことが多くなります。

一方、英語のモデルは、基本的に単語単位で分割を行うことが多くあります。英語には、単語の境界が明確であり、空白やピリオドなどの特殊文字で区切られているため、単語単位での分割が可能です。

日本語のトークナイザーが、同じモデルで問題なく動作するためには、以下のようなアプローチがとられます。

  1. 文字や音素の特徴を考慮したトークナイザー:日本語のトークナイザーは、文字や音素の連続性を考慮して分割を行うことが多くなります。
  2. Multi-lingual モデル:日本語と英語の両方を対象として設計されたモデルは、両言語の特徴を考慮してトークナイザーを実現することができます。
  3. Language-agnostic モデル:日本語と英語の両方を対象として設計されたモデルは、言語の特徴を考慮せずにトークナイザーを実現することができます。

以上のように、日本語のトークナイザーが、同じモデルで問題なく動作するためには、言語の特徴を考慮したアプローチが必要です。

上の文章を英語訳して入力してみました。

入力した文章( 298文字 52単語 )

DeepLで翻訳: https://www.deepl.com/ja/translator

Please answer the following questions in Japanese

In Japanese, it seems to me that what is split by the tokenizer is character units rather than words. It seems to me that the mechanism is quite different from the English model, which allows splitting by words, but will the same model work fine?
モデル Jurassic-2 Mid Claude 3 Haiku Llama 3 8B Instruct
入力トークン数 39 66 72

ばらつきがかなりある。トークン数は日本語よりは少ない。

備考:レスポンス

Jurassic-2 Mid

かまいきそくを使っていますか?
単語単位を区切るのではなく、文字単位を区切るようなと思いますが、それは正しいと思いますか?
英語では、単語単位を区切るようなハイパーマックスモデルがありますが、それと同じモデルは日本語でも十分ですか?
補足すると便利ですか?
よろしくお願いいたします
よろしくお願いします

Claude 3 Haiku

はい、その通りです。日本語の形態素分析では、文字単位での分割が一般的です。一方、英語の場合は単語単位での分割が主流です。

日本語の形態素分析モデルと英語の単語分割モデルには、いくつかの違いがあります。日本語のモデルは文字単位での分割に最適化されているため、単語単位での分割には適していない可能性があります。

しかし、言語モデルは学習データに応じて柔軟に変更できるため、同じモデルを使って日本語と英語の両方の分析を行うことは可能です。ただし、言語の特性に合わせて適切な前処理やパラメータ調整が必要になるでしょう。

Llama 3 8B Instruct

Here are the answers to your questions in Japanese:

Q: In Japanese, it seems to me that what is split by the tokenizer is character units rather than words. It seems to me that the mechanism is quite different from the English model, which allows splitting by words, but will the same model work fine?

A: (Nihongo no tokenizer wa moji unit ni wakareru koto ga arimasu. Eigo no model to wa chigau koto ga arimasu ga, sono model wa dō demo ii no ka?)

Translation: In Japanese, the tokenizer splits by character units. It's different from the English model, but will that model work fine too?

Note: The Japanese text is written in a combination of Hiragana, Katakana, and Kanji characters.

💡
トークナイザが文章をトークンに分割します。
最近発表されたGPT-4oのAPIの料金はGPT-4 Turboのものの半分、$5.00 / 1M tokensとなりました。さらにトークナイザの変更により日本語のトークン数は少なくなっています。(引用: https://openai.com/index/hello-gpt-4o/ )
このように料金を見積もるときにはトークン数あたりの料金だけではなくトークナイザの性能も意識すると良いです。

現在のラインナップの場合、BedrockのLLMは基本的にClaude 3かLlama 3のモデルを選べば良いと思います。

ただ、モデルに関する情報はかなりのスピードで更新されるので使用する際は毎回調査が必要です。

BedrockではこれらのサービスをAPIを介して簡単に利用することができます。

RAG

データベースなどから情報を検索した後にその結果とユーザからの質問を組み合わせたプロンプトを入力する。これにより精度向上や嘘情報の出力(ハルシネーション)の防止が期待できます。

image block
引用:
カスタマイズ

独自のデータを使用してBedrockで用意されている基盤モデルをカスタマイズすることもできます。これにより独自のスタイル、情報を持ったモデルを公開することができます。

ニフティ 社内 での活用事例

社内でのBedrockの活用事例についていくつか紹介していきます。

@niftyニュース:AIざっくり要約

ニュースの記事を3文で要約しています。

image block

https://news.nifty.com/article/magazine/12193-3059286/

概要

生成AIを用いたプロダクトの実装例として、ニフティニュースにおけるAIざっくり要約があります。

従来は人の手で行っていた3行要約をAIに行わせることで、迅速かつ低コストに大量の要約を生成することを可能にしています。

これまでは人の手で行うと1日50本程度が限界でした。

現在は1000本ほどの記事を自動でAIが要約を付与しています。

使用されているモデル

Claude 3 Sonnet

myfriendGPT / slackGPT
概要

Slack上でメンションとDMから生成AIと会話をすることができるアプリです。

社内でも大変広く活用されており、技術的な質問から日常会話までなんでも答えてくれる友達です。みんなもぜひ使いましょう。

使用されているモデル

Claude 3 haiku

AIを使用する際のルール

Bedrockの入力データが学習に使われるか

結論:されない。AIを使用する際は入力されるデータが学習に使われるかを必ず確認してください。

ページに書かれていることをざっくり要約

AWSの責任共有モデルでは、AWSがクラウドインフラの保護を担当し、ユーザーがデータや設定の管理を担当します。

データ保護のために、AWS IAMの使用や多要素認証、暗号化などのセキュリティ対策が推奨されます。

Amazon Bedrockではユーザーデータを保存せず、トレーニングデータは微調整モデルのみに使用され、機密データの使用は避けるべきです。

社内で生成AIを使用する際の注意事項

生成AIの利用規約と社内の情報資産管理基準を確認しながら入力する情報には気をつけましょう。