2.6K Views
October 28, 24
スライド概要
CDKと生成AI初心者のインフラエンジニアがGenUでまとめて入門する
仕事:AWS運用保守&PM的なことをしています。 2023-24 Japan AWS All Certifications Engineers.
ますの @masno_soy Work プロジェクトマネージャ (仮) AWS基盤 運用保守 (インフラ) Certification 2024 Japan AWS All Certifications Engineers Community JAWS-UG 配信部 My Favorite AWS Service AWSサポート
わたしの能力 CDK / IaC ・業務で使ったこと無い ・開発経験無し / 言語ワカラナイ ・数回ハンズオンで触った程度 生成AI ・本を読んでチョットワカルに到達 インフラ ・AWSのクラウドインフラ設計構築はチョットワカル ・簡単なシェル程度であれば作れる
今日お話すること GenUのソースコードからCDK編集箇所を探す デプロイ先のアカウント設定箇所を探す GenUで利用するモデルを指定する GenUからナレッジベースのオプション設定を確認する CDKでRAGを設定する際の記述方法を確認する
生成AIを触りたい。IaCもそろそろ触らないと...。 GenU構築で CDKを眺めれば どちらも入門出来るのでは??
進め方: 初心者でも安心の公式手順を参考にする 生成AI体験ワークショップ
CDKへ入門してみる
GenUのソースコードからCDK入門 ブラウザ拡張機能や 各種ドキュメント類が格納されている GenUのCDKデプロイ設定は [packages]内にあり。 ・cdk : CDK関連はココ! ・types / web : フロントエンド関連
GenUのソースコードからCDK入門 デプロイ時の処理が記載されている ※ワークショップでは触らないファイル ※細かい設定変更をする場合は修正する GenUで利用するリソースの有効 / 無効 などを制御するファイル ※モデルの設定などはココから行う
GenUのソースコードからCDK入門 GenU用のフロント/バックエンドリソースは 「cdk」フォルダ配下にリソース毎まとめら れている。 このあたりのフォルダ構成は開発者の決めの 問題っぽいので自由度が高そう。
デプロイ先のアカウント設定箇所を探す cdk/bin/generative-ai-use-cases.ts env内「CDK_DEFAULT_ACCOUNT」が 関係してそう??
デプロイ先のアカウント設定箇所を探す 公式より: 環境を指定する複数の方法を使用する場合、次の優先順位 AWS CDK に従います。 1. ハードコードされた値。 2. AWS_DEFAULT_ACCOUNT および AWS_DEFAULT_REGION 環境変数 3. credentials および config ファイルからの --profile オプション 4. credentials および config ファイルからの defaultプロファイル
デプロイ先のアカウント設定箇所を探す 1. ハードコードされた値。 a. してない 2. AWS_DEFAULT_ACCOUNT および AWS_DEFAULT_REGION 環境変数 a. 使ってるけど環境変数に格納していない 3. credentials および config ファイルからの --profile オプション a. プロファイル使ってない 4. credentials および config ファイルからの defaultプロファイル a. configureで設定してないがSageMaker上からawsコマンド実行可能 結論、今回は「4」のケースがあてはまると考える
(余談)同じアカウント&リージョンに対して 同じハンズオンをやった場合上書きされる? スタック名が同じになるので 上書きされる様子。 (※分け方は調査しきれず時間切れ...)
Amazon Bedrockへ 入門してみる
GenUで利用するモデルを指定する 該当箇所のパラメータを修正するだけで完了 ~/generative-ai-use-cases-jp/packages/cdk/cdk.json "modelIds": [ "anthropic.claude-3-5-sonnet-20240620-v1:0", "anthropic.claude-3-sonnet-20240229-v1:0", "anthropic.claude-3-haiku-20240307-v1:0" ], "imageGenerationModelIds": [ "amazon.titan-image-generator-v2:0", "stability.stable-diffusion-xl-v1" ],
GenUからナレッジベースの設定を確認する
デフォルトCDKで下記5つが用意されている
packages/cdk/bin/generative-ai-use-cases.ts
cloudFrontWafStack = new CloudFrontWafStack(app, 'CloudFrontWafStack', {
const ragKnowledgeBaseEnabled =
app.node.tryGetContext('ragKnowledgeBaseEnabled') || false;
const searchAgentEnabled =
app.node.tryGetContext('searchAgentEnabled') || false;
const guardrailEnabled: boolean =
app.node.tryGetContext('guardrailEnabled') || false;
const dashboard: boolean = app.node.tryGetContext('dashboard')!;
CDKでRAGを設定する際の記述方法を確認する import { RagKnowledgeBaseStack } from '../lib/rag-knowledge-base-stack';
CDKでRAGを設定する際の記述方法を確認する 今回はRAGに絞って確認をする。 CDKの設定方法は公式ドキュメントを参照。 generative-ai-cdk-constructsから ナレッジベースの記述方法を読み解く
CDKでRAGを設定する際の記述方法を確認する 設定可能なベクトルストア Amazon OpenSearchServerless Amazon RDS Aurora PostgreSQL Pinecone 設定可能なデータソース Amazon S3 Webクローラ Confluence SharePoint Salesforce
ベクトルストアの設定方法 ドキュメントより抜粋 ベクトルストアの設定箇所
ベクトルストアの設定方法
const knowledgeBase = new bedrock.CfnKnowledgeBase(this, 'KnowledgeBase', {
name: collectionName,
roleArn: knowledgeBaseRole.roleArn,
knowledgeBaseConfiguration: {
type: 'VECTOR',
vectorKnowledgeBaseConfiguration: {
embeddingModelArn: `arn:aws:bedrock:${this.region}::foundation-model/${embeddingModelId}`,
},
},
storageConfiguration: {
type: 'OPENSEARCH_SERVERLESS',
opensearchServerlessConfiguration: {
collectionArn: cdk.Token.asString(collection.getAtt('Arn')),
fieldMapping: {
metadataField,
textField,
vectorField,
},
vectorIndexName,
},
},
});
GenUのコードでは[instruction]が見当たらず。
storageConfigurationの設定が追加されている。
Bedrock APIリファレンスに記載あり。
ベクトルストアの設定方法 VPCなどの細かい指定が必要ではあるが Amazon RDS Aurora PostgreSQLへの 適用も出来る。
データソースの指定 ドキュメントより抜粋 データソースの設定箇所
データソースの指定 new bedrock.CfnDataSource(this, 'DataSource', { dataSourceConfiguration: { s3Configuration: { bucketArn: `arn:aws:s3:::${dataSourceBucket.bucketName}`, inclusionPrefixes: ['docs/'], }, type: 'S3', }, S3バケットを作成し「docs/」配下を RAG用のドキュメントを指定している。
データソースの指定 Webクロール、Confluence等も データソースとして指定可能。 コードに追記することで連携可能 なデータソースとして実装するこ とが出来る。
まとめ:GenUのCDKを触ってみての所感 CDKの構造について理解することが出来た 既存のCDKをベースに修正は出来そう GenUのCDKを見ることでBedrockのオプション機 能を把握することが出来た イチから自分でCDKを作ってデプロイは難しい 今後の目標として PineconeやAuroraでのRAG利用について CDKを使ってデプロイしてみたい所存です。
ご清聴ありがとうございました
参考情報 ●生成 AI 体験ワークショップ https://catalog.workshops.aws/generative-ai-use-cases-jp/ja-JP ●生成AIユースケースを考え倒すためのGenerative AI Use Cases JP (GenU)の魅力と使い方 https://speakerdeck.com/okamotoaws/sheng-cheng-aiyusukesuwokao-edao-sutamenogenerative-ai-use-cases-jp-genu-nomeili-toshi-ifang ●generative-ai-cdk-constructs > Amazon Bedrock Construct Library https://awslabs.github.io/generative-ai-cdk-constructs/src/cdk-lib/bedrock/#knowledge-bases ●OpenSearchServerlessFieldMapping https://docs.aws.amazon.com/ja_jp/bedrock/latest/APIReference/API_agent_OpenSearchServerlessFieldMapping.html ●Knowledge Bases for Amazon Bedrock + ECS Fargate を CDK で作る https://iret.media/103700