スライド/ChatGPTを使った文書の学習システムをサーバーレスで作ってみる version 13
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
スライド/ChatGPTを使った文書の学習システムをサーバーレスで作ってみる
## 自己紹介
- 夏目 祐樹 (ナツメ ユウタ)
- クラスメソッド株式会社
- CX事業本部 Delivery部
- 自称 サーバーレスエンジニア
- 好きなAWSサービス
- Lambda, DynamoDB, SQS, Glue
- 最近やってるゲーム
- FF14 (極ゴルベーザ討滅戦、勝てない)
- 崩壊スターレイル (均衡レベル5になったけど、育成素材が足りない)
## LlamaIndexについて (1)
- https://gpt-index.readthedocs.io/en/latest/
- LLMは大量の公開情報で学習されている
- LLMをプライベートデータで強化するためのFrameworkがLlamaIndex
- OpenAIのLLMを使用することもできる
- 既存のデータソースとデータ形式を取り込むためのコネクタ
- データ(インデックス、グラフ)を簡単に使用保存するための方法
## LlamaIndexについて (2)
![[9005514175731682] スクリーンショット 2023-05-26 14.29.42](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/9614b200-81d6-4743-9712-2e2e35666fe8.png)
## 作りたいもの
- Developers IOの記事を収集する仕組みを作ったので、学習させる仕組みも実装したい
![[9005514175400231] luciferous-devio-index(1)](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/e51613aa-ca9d-4f21-8ff2-7de038f39545.png)
## 完成してません
## 言い訳 (1)
- Developers IOの記事を約40,500件を仕組みとは別に学習させようとしてみた
- エラーが色々出てうまく動かなかった
1. EC2上でしてみた -> 学習開始から3日後、文字列を解釈するライブラリでエラー
1. GlueのPython Shell Jobでやってみた -> 学習開始から2日後、学習したデータをzip圧縮しようとしたらメモリ超過でエラー
1. GlueのPython Shell Jobでやってみた -> 学習開始の翌日、学習したデータをJSON化しようとしたらメモリ超過でエラー
## 言い訳 (2)
- 家のGaming PCにWSL2の環境を構築し、メモリ26GBを使えるようにして学習させた
- 2日で学習は完了した
- 完了したが吐き出されたデータは約6.5GBあった
- これをサーバーレスで扱うには色々考慮する必要がある
## どう学習させていくか
- Indexのファイルを維持する
- GlueのPython Shell Job (もともと使う予定だったやつ)
- Fargate
- Indexのファイルを諦める
- ローカル以外の場所をLlamaIndexのストレージとして利用する
## GlueのPython Shell Job
- AWSのサーバーレスなコンピュートリソースの一つ
- Glue JobではPython Shell Jobの他にSpark Jobもある
- 計算能力は1DPUもしくは0.0625DPU (1/4 DPU)
- 1DPU = 4つのvCPUと16GBのメモリ
- タイムアウトは多分青天井
- 100年を設定してみたら何故かJob DetailのUpdateができてしまった
- なんで?
## Python Shell Jobで使えるライブラリ
![[9005514171775226] スクリーンショット 2023-05-26 15.35.52](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/1eee8831-7620-4359-b908-898accba502b.png)- Python 3.6
- `awscli==116.242`, `botocore==1.12.232`, `boto3==1.9.203`, `numpy==1.16.2`, `pandas==0.24.2`, `PyGreSQL==5.0.6`, `requests==2.22.0`, `scimitar-learn==0.20.3`, `scipy==1.2.1`
- Python 3.9
- ライブラリセット: 分析
- `avro==1.11.0`, `awscli==1.23.5`, `awswrangler==2.15.1`, `botocore==1.23.5`, `boto3==1.22.5`, `Elasticsearch==8.2.0`, `numpy==1.22.3`, `pandas==1.4.2`, `psycopg2==2.9.3`, `pyathena==2.5.3`, `PyMySQL==2.9.3`, `pyodbc==4.0.32`, `pyorc==0.6.0`, `redshift-connector==2.0.907`, requests==2.27.1`, `scikit-learn=1.0.2`, `scipy==1.2.1`, `SQLAlchemy==1.4.36`, `s3fs==2022.3.0`
- ライブラリセット: なし
- `awscli==1.23.5`, `botocore==1.23.5`
自己紹介
- 夏目 祐樹 (ナツメ ユウタ)
- クラスメソッド株式会社
- CX事業本部 Delivery部
- 自称 サーバーレスエンジニア
- 好きなAWSサービス
- Lambda, DynamoDB, SQS, Glue
- 最近やってるゲーム
- FF14 (極ゴルベーザ討滅戦、勝てない)
- 崩壊スターレイル (均衡レベル5になったけど、育成素材が足りない)
LlamaIndexについて (1)
- https://gpt-index.readthedocs.io/en/latest/
- LLMは大量の公開情報で学習されている
- LLMをプライベートデータで強化するためのFrameworkがLlamaIndex
- OpenAIのLLMを使用することもできる
- 既存のデータソースとデータ形式を取り込むためのコネクタ
- データ(インデックス、グラフ)を簡単に使用保存するための方法
LlamaIndexについて (2)
作りたいもの
- Developers IOの記事を収集する仕組みを作ったので、学習させる仕組みも実装したい
完成してません
言い訳 (1)
- Developers IOの記事を約40,500件を仕組みとは別に学習させようとしてみた
- エラーが色々出てうまく動かなかった
- EC2上でしてみた -> 学習開始から3日後、文字列を解釈するライブラリでエラー
- GlueのPython Shell Jobでやってみた -> 学習開始から2日後、学習したデータをzip圧縮しようとしたらメモリ超過でエラー
- GlueのPython Shell Jobでやってみた -> 学習開始の翌日、学習したデータをJSON化しようとしたらメモリ超過でエラー
言い訳 (2)
- 家のGaming PCにWSL2の環境を構築し、メモリ26GBを使えるようにして学習させた
- 2日で学習は完了した
- 完了したが吐き出されたデータは約6.5GBあった
- これをサーバーレスで扱うには色々考慮する必要がある
どう学習させていくか
- Indexのファイルを維持する
- GlueのPython Shell Job (もともと使う予定だったやつ)
- Fargate
- Indexのファイルを諦める
- ローカル以外の場所をLlamaIndexのストレージとして利用する
GlueのPython Shell Job
- AWSのサーバーレスなコンピュートリソースの一つ
- Glue JobではPython Shell Jobの他にSpark Jobもある
- 計算能力は1DPUもしくは0.0625DPU (1/4 DPU)
- 1DPU = 4つのvCPUと16GBのメモリ
- タイムアウトは多分青天井
- 100年を設定してみたら何故かJob DetailのUpdateができてしまった
- なんで?
- 100年を設定してみたら何故かJob DetailのUpdateができてしまった
Python Shell Jobで使えるライブラリ
- Python 3.6
awscli==116.242
,botocore==1.12.232
,boto3==1.9.203
,numpy==1.16.2
,pandas==0.24.2
,PyGreSQL==5.0.6
,requests==2.22.0
,scimitar-learn==0.20.3
,scipy==1.2.1
- Python 3.9
- ライブラリセット: 分析
avro==1.11.0
,awscli==1.23.5
,awswrangler==2.15.1
,botocore==1.23.5
,boto3==1.22.5
,Elasticsearch==8.2.0
,numpy==1.22.3
,pandas==1.4.2
,psycopg2==2.9.3
,pyathena==2.5.3
,PyMySQL==2.9.3
,pyodbc==4.0.32
,pyorc==0.6.0
,redshift-connector==2.0.907
, requests==2.27.1,
scikit-learn=1.0.2,
scipy==1.2.1,
SQLAlchemy==1.4.36,
s3fs==2022.3.0`
- ライブラリセット: なし
awscli==1.23.5
,botocore==1.23.5
- ライブラリセット: 分析