Slide 1

Slide 1 text

2024.03.07 JAWS-UG コンテナ支部 #26 s.hiruta (@web_se) ECS Fargate EBS integrationの概要、ユースケース CDKで構築してみた。

Slide 2

Slide 2 text

Self introduction 【名前】 s.hiruta ( @web_se ) 【仕事】 コンテナ、マイクロサービス基盤構築 【興味分野】 Containers、WASM+LLM、 Github clouddev-code zenn clouddevcode 2

Slide 3

Slide 3 text

Previous LT Slide https://speakerdeck.com/cloudevcode 3

Slide 4

Slide 4 text

アジェンダ • サービスアップデート • Persistent Volumesとの比較 • CDKで構築 • 4

Slide 5

Slide 5 text

ECS EBS Integration • 5

Slide 6

Slide 6 text

サービスアップデートのポイント • EBS SnapshotからRunTask時にEBSをプロビジョニン グして外付ディスクとして利用できる • snapshotサイズ以上のディスクがプロビジョニング される 6

Slide 7

Slide 7 text

ECS のRoleについてのおさらい • Task Role • Task Execution Role • EBS Volume Role new! 7

Slide 8

Slide 8 text

構成図 8

Slide 9

Slide 9 text

ECS EBS Integrationの考慮事項 • ( EC2 launch type ) Nitro-base Linux instances • (Fargate launch type) platform version 1.4.0 • ( EC2 launch type ) ECS-Optimized AMI 20231219 or later • magnetic EBS Volume type not supported • attach at most one Amazon EBS volume • snapshot of an Amazon EBS that contains partitions not supported • Task がterminateしたら、EBSも削除される https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html 9

Slide 10

Slide 10 text

GP3だけでなく、IO1、IO2 • 10

Slide 11

Slide 11 text

ECS EBS Integrationのユースケース • GGUFにMixtral-8x7B-Instruct-v0.1のモデルを Q5_K_Mで量子化しても、30Gになる • ML Training用docker continerにモデルデータを読 む方法がありますが、docker container imageの minimal化に使える 11

Slide 12

Slide 12 text

ECS EBS Integrationなかったときどうしていたか • Amazon EFS – EBSに比べて、IO性能はもちろんでない • S3 Express one zone – ML 用途なら、mount point of S3も使えるが、IO 性能は犠牲になる 12

Slide 13

Slide 13 text

 KubernetesのVolumesの類似機能 • Persistent Volumesのsnapshotからのプロビジョニ ング • snapshot size未満のディスクプロビジョニングは不 可 • snapshot size以上は可 • オンライン拡張も可 https://kubernetes.io/docs/concepts/storage/persistent-volumes/#volume-snapshot-and-restore-volume-from-snapshot-sup port 13

Slide 14

Slide 14 text

 Constructs実装一部 14

Slide 15

Slide 15 text

CDK • ServiceManagedVolume (v2.122.0) • volumeConfigrations propertyはL2 Construtsまで は対応済み ServiceManagedVolume mountIn FargateService 15

Slide 16

Slide 16 text

 volumeConfigrations • どのvolumeを使うか指定する • L3 Constructsは対応してなさそう Invalid request provided: CreateService error: The volume name 'ebs1' in your request does not have a matching volume in your Task Definition that is configurable at launch. (Service: AmazonECS; StatusCode: 400; Error Code: InvalidParameterException; Request ID: 811742b3-0288-4b4c-80a1-b86ffa9e9047; Proxy: null 16

Slide 17

Slide 17 text

 snapshot size以下のディスクをプロビジョニングした ときの挙動 • 結論、snapshot size以下のサイズを指定しても、 snapshotのサイズでEBSがプロビジョニングする 17

Slide 18

Slide 18 text

 snapshot size以上のディスクをプロビジョニングした ときの挙動 • 結論、snapshot size以上のサイズを指定しても、指 定したサイズでEBSがプロビジョニングする 18

Slide 19

Slide 19 text

 値段 • EBS(gp3) 0.096/GB USD (IOPS料金はかかる)
 • EFS 0.36/GB USD (Multi-AZ with Elastic throughput )
 19

Slide 20

Slide 20 text

 まとめ • ML Training、大容量のデータを低レイテンシなスト レージを使うケースに最適と思われる 20

Slide 21

Slide 21 text

21