ããã«ã¡ã¯ããã·ã€ã§ãã ãç¥ãã… æ®å¿µã§ãããä»åã®æŽæ°ãæã¡ãŸããŠããã®ããã°ã¯æŽæ°ã忢ããããšã«ãªããŸããã æè¿ã«ãªã£ãŠç¹ã«å€§ããªå€åããã£ããšããããã§ã¯ãªãã®ã§ããããã®ãŸãŸç¶ç¶ããŠããããã®åååããŸã倧ãããªããªã£ãŠãã… ãšããã®ãçç±ã§ãã 2022幎5æã«ãã®ããã°ãã¯ãããŠããäºå¹Žåã»ã©ãé±ã«ã²ãšã€ããŸãã¯éé±ã§èšäºã远å ããŠããŸããã ããã㊠20åè¿ãã®ç€Ÿå¡ããããã®ãã®ã®ç¹åŸŽãçŸãããããªããããªèšäºããå±ãããŸããã ãã®ããã°ã¯ãã°ãããã®ãŸãŸç¶æããæ
å ±ãããŸãã«é³è
åããŠããŸãåã«å
¬éã忢ããäºå®ã§ãã ãã€ã©ã€ã ãšããããšã§ãèŠããªããªã£ãŠããŸãåã«ããããŸã§ã®èšäºã®äžéšãã玹ä»ããããšæããŸãããã®èšäºãèªãã§ããã ããæ©äŒã«ãèå³ããããã®ãèªãã§ãã£ãŠããã ããã幞ãã§ãã ããããç¥ããªãã£ããããªç€Ÿå¡ã®ãã£ã©ãç«ã£ãèšäºããããŸããã 俺æµïŒPEP668ãšããŸããã£ãŠããæ¹æ³ [åçŽ] ããã°ãªåŒïŒ AWS Linux ãã°ã€ã³ RTA ããã°å
¬éãéå§ããé ããã®ãã¬ã³ããããããŸãæ€çŽ¢ã«ãããããã£ãããã§ãcontainer (Docker, WSL) é¢ä¿ã®èšäºã¯ããèªãã§ããã ããŠããŸããã Windows ã§ Docker Desktop ã䜿ããªã Docker ç°å¢ãæ§ç¯ãã (WSL2) WSLã®DNSèšå®ãã«ã¹ã¿ã ãããïŒ202203çŸåšïŒ æ°ã¯å°ãªãã£ãã§ãããå®éã®ã²ãŒã ã¿ã€ãã«ã«çµ¡ããäºäŸã玹ä»ã§ããŸããã ã¹ããªãŒãã³ã°ã§ã¯ã©ãŠãäœéšçããªãªãŒã¹ãã話 ãäžè©±ã«ãªã£ãŠããäŒç€Ÿæ§ãããååãããã ããèšäºããããŸããã [ã¬ããŒã]AWS Summit Tokyo 2023 TiDBã¯ãŒã¯ã·ã§ãããTiDBãšãã¹ããŒããžã®éãã«åå ããŠããŸããïŒ CloudNative Days çŠå²¡ 2023 åå ãšãªãã£ã¹èšªåèš ä»ã«ãæ§ã
ãªèšäºããããŸãã®ã§ãã¿ã°äžèЧ ã å·çè
äžèЧ ããã奜ã¿ã®ãã®ãæ¢ããŠã¿ãŠãã ããã ãŸãšã ã¯ãããåœåã«äºæ³ããŠãããããå€ãã®ããã«èšªåããã ãã瀟å
å€ããåå¿ãããã ããŸããã ç®çãšããŠãããæã
ã®æ¥åãäžéšã§ãç¥ã£ãŠãããããšã«é¢ããŠã¯ããçšåºŠéæã§ãããšèããŠããŸãã èšäºãèªãã§ããã ããçæ§ãã»ããšãã«ããããšãããããŸããã æ°è»œã«ã¢ãŠãããããã§ããå Žãç¡ããªã£ãŠããŸãã®ã¯æ®å¿µã§ãããããã§ãªããŠãããŸãã©ããã§ãäŒãã§ãããå¬ããã§ãã ããã§ã¯ãŸãïŒ ð
以åãGKE ã Cloud Run ã§ GPU ã䜿ãèšäºãæžããŸããã Cloud Run ã®èšäºã§ã¯ãå®éã«ã¯ Vertex AI ã® Custom Jobs ãè¯ããããšããããšãæžããŠããŸãã GPU ãæè»œã«äœ¿ããšããä»ã«ããããã®ãããã®ã? ããããèŠãŠã¿ããšãBatch ãããããšãæãåºããŸãããããŸã䜿ã£ãããšããªããããã« GPU ã䜿ããšãªããšäœ¿ãåæã¯ã©ããªã®ã? ãšæ°ã«ãªã£ãã®ã§ãä»åã¯å®éã«è©ŠããŠã¿ãããšæããŸãã Batch ã«ãããè²»çš ãŸãã¯ãã€ãã®éèŠãªãã€ã³ããè²»çš ããã§ãã¯ããŸããã¯ã©ãŠããªãœãŒã¹ã®æéã«ã€ããŠç¢ºèªãããšãã©ã®ããã«ãããšäœã³ã¹ãã§éçšã§ãããããããã®ã¯ãã¡ããã®ããšãã¯ã©ãŠããããã€ããŒåŽã§ã©ã®ããã«äœ¿ã£ãŠã»ããããéããŠèŠããŠãããããã®ã§ããã£ãã確èªããŠããããšãããããããŸãã Batch ã䜿ãããšã§è¿œå ã®è²»çšã¯å¿
èŠãªãããã§ããããããå®è¡ããã®ã«æ¶è²»ããã¯ã©ãŠããªãœãŒã¹ã¶ãã¯èª²éãããŸããäž»ã«ãcompute (CPU/memory)ãnetworkingãdisk ãªã©ã®ããªãã¿ã®èŠçŽ ã§ããããåŠçã«åãããŠãå¿
èŠæäœéã®ãã®ãéžæããããã«ããŠããã°ããããã§ãã â» è²»çšã倧ãã倿ŽãããããšããããŸãã䜿çšãããéã«ã¯å
¬åŒã®æ
å ±ãå¿
ã確èªããŠãã ããã å®è¡æ¹æ³ã調ã¹ã 詊è¡é¯èª€ãç¹°ãè¿ãã«ã¯ãweb console ã§ã®æäœãã gcloud CLI ã䜿çšããã®ã䟿å©ã§ããBatch job ãå®è¡ãããããããªã³ãã³ãã©ã€ã³ãæžããŠã¿ãŸãããã …ãšæã£ãã®ã§ãããcommand reference ãèŠãã«ããªããªãè€éããã§ããGCE VM ã® spec ãŸã§æå®ããããšæããšé
ç®ãå€ããREST resource reference ãèŠãŠæžããªã©ãšæžãããŠããŠãªããªãæ·å±
ãé«ãã§ãã ãšããããšã§ä»åã¯ãweb console ã®äŸ¿å©æ©èœããç»é¢ã§èšå®ããŠããå
容ãšåçã®æ©èœãå®è¡ããéã®ã³ãã³ãã©ã€ã³ãååŸã§ãããã¿ã³ãã䜿ã£ãŠã¿ãŸãããã以äžã®å³ã®ãã (èµ€ç¢å°) ã§ããã ã¡ãªã¿ã«äžèšã¯æ°ãã job ãäœæããç»é¢ãªã®ã§ãããproject ã«ãã㊠Batch ã® API ã enable ãããŠããªããšãäžéšã®é
ç®éžæã§ããããªç¶æ
ã«ãªã£ãŠããŸã (éžæã®æäœãã§ããªã) ããã§ãããã¡ã ã§ãå ±åãããŠããããã«ããŸã ã§ããã° API ã enable ããŠãããŸãããã
Google Cloud ã®æäŸãã Cloud Spanner (ä»¥äž Spanner) ã¯ã¹ã±ãŒã©ãã«ãªã¯ã©ãŠãã® database ã§ãæè¿ã§ã¯ graph database ã®æ©èœã远å ãããããªã©ãéçºãçãã«è¡ãããŠããŸãã Google Cloud ã® database 補åã§ã¯ vector search ã®æ©èœãæã€ãã®ãå€ããBig Query ã Cloud SQL ãªã©ãã®ç¹æ§ã«åãããŠéžæããããšãã§ããŸããSpanner ã«æ©èœè¿œå ãããã®ããã°ããåã ã£ããšèšæ¶ããŠããŸããã詊ããããšããªãã£ãã®ã§ä»åã¯ãã®äœ¿ãåæã詊ããŠã¿ãããšæããŸãã â» ãã ã Vector functions ã¯èšäºäœææç¹ã§ã¯ãŸã preview æ©èœã§ãããŸããSpanner Standard ã§ã¯å©çšã§ãããEnterprise ãŸã㯠Enterprise Plus ãå¿
èŠãªããã§ããSpanner ã® Edition ããšã®éãã¯ãã¡ãã Spanner emulator ã䜿ããŸã 1/10 instance ããèµ·åã§ããããã«ãªã£ã ãšã¯ããå²ãšãéãããããšãããèšããã Spanner ã§ããæ¬çªç°å¢ã§äœ¿ãã«ã¯é Œãããããšãã®äžãªããã§ããã©ãããšããããã§ãä»å㯠Spanner ã® emulator ã䜿çšããŸãã ãã® emulatorãããŸãæ°ã«ããããšããªãã£ãã®ã§ãã ãã¡ã ã§ãœãŒã¹ãå
¬éãããŠãããèŠãŠã¿ããš (ããªããã§ã¯ãªã) çµæ§ãã£ãããšå®è£
ãããŠããŸããããã ãã¡ã³ãããã®ããªããªããããžãããã§ããã¡ãªã¿ã«ãã® blog ã§ããããšããããŠãã Dev Container ã«ã察å¿ããŠããã .devcontainer/devcontainer.json ãçšæãããŠããŸããåã« pre-built ã® image ã§ããããã«è©Šããããšãã«ã¯ãããããããŸããã
RAG (Retrieval-Augmented Generation, æ€çŽ¢æ¡åŒµçæ) ã䜿çšãã application ãéçºã§ãã framework ãšããŠãFirebase Genkit ãªããã®ããããšç¥ããŸããã Firebase ã¯ãèªèšŒã database ãªã© web app ãã¢ãã€ã«ã²ãŒã ãªã©ã®éçºã«äŸ¿å©ãªæ§ã
ãªæ©èœãæäŸããŠãã platform ã§ããFirebase ãå©çšããããšã«ãã£ãŠãããã£ãæ©èœã®çµã¿èŸŒã¿ã®æ·å±
ãäžããããŸã Google Cloud ãªã©ã®å€éšãµãŒãã¹ãšã®é£æºã«ããæ¡åŒµãå¯èœãªã®ã§ãå°ããã¯ãããŠåŸã
ã«ã¹ã±ãŒã«ããŠããéçºã«åšåãçºæ®ããŸãã ä»åã¯ããã® Firebase Genkit ã䜿ã£ã RAG application ã®éçºäœéšãã©ã®ãããªãã®ãªã®ããå
¬åŒ document Retrieval-augmented generation (RAG) ã«æ²¿ã£ãŠèŠãŠãããŸãããã License Genkit ã® LICENSE ã¯ãApache License 2.0 ã§ãããŸããäžèšãã document ã«ããã³ãŒããããŒãžæ«å°Ÿã®èšè¿°ããåæ§ã« Apache License 2.0 ãšæèšãããŠããŸãã éçºç°å¢ãã€ãã devcontainer ã®æºå ãã€ããªãã Visual Studio Code ã® Dev Container æ©èœã䜿çšããŸããä»ã®ç°å¢ããå©çšã®æ¹ã¯ãææ°ã§ããã以äžã®æ§ç¯æé ãåèã«ããŠç°å¢æ§ç¯ããŠãã ããã ãã®ããã°ã§ã¯ä»ã«ã Dev Container ã«é¢ããèšäº ããããŸããDev Container ã£ãŠäœ? ãšæãããããã«ãã芧ããã ããã幞ãã§ãã ä»å㯠Firebase ã§ Node.
ã¯ããã« ã¹ã¯ãŠã§ã¢ã»ãšããã¯ã¹ã§SREãããŠããäŒè³ãšãããŸãã ä»åPingCAPæ§äž»å¬ã®TiDBã¯ãŒã¯ã·ã§ããã«åå ããŠããã®ã§ãTiDBã®æŠèŠãšé
åã«ã€ããŠãäŒãããããšæããŸãïŒ PingCAPæ§ã®å
¬åŒããŒãžã«ãTiDBã®ç޹ä»ãäºäŸçã®æ²èŒããããŸãã®ã§èå³ãããã°æ¯éïŒ https://pingcap.co.jp/ PingCAPæ§å
¬åŒããŒã ããŒãž https://pingcap.co.jp/event/workshop/ TiDBãšãã¹ããŒããžã®éïŒå®è·µçãªç¥èãšPingCAPèªå®ã®ã¹ãã«ã¢ããã¯ãŒã¯ã·ã§ãã TiDBãäžèšã§è¡šããšãMySQLãšé«ãäºææ§ãããããªã³ã©ã€ã³ã§Scaleå¯èœã§ãOLTPãšOLAPãä»»ããããNewSQLãã§ãã ããå°ãèšããšMySQLãšã®é«ãäºææ§ã«ããç§»è¡ã®å®¹ææ§ãé«ãScalabilityã«ããèé害æ§ããããŠã³ã¹ãã¡ãªãããåŸãããçæ³çãªDatabaseã ãšèããŠããŸãã TiDBã®ã¢ãŒããã¯ãã£ãŒ ä»åã®ã¯ãŒã¯ã·ã§ããã§ã¯TiDBã®åºæ¬çãªæ§æèŠçŽ ããã³ãºãªã³åœ¢åŒã§åŠã¶ããšãã§ããŸããã TiDBã¯åºæ¬çã«MySQLäºæã§ãããå
éšçã«ã¯åæ£ã¢ãŒããã¯ãã£ãŒãæ¡çšããŠããŸãã倧ããåãããšSQLå®è¡èšç»ã®çæãšãSQLå®è¡ãæ
ãTiDB Serverãã¹ãã¬ãŒãžã¬ã€ã€ãŒã§ããTiKVããããŠOLAPç³»ã®åŠçãæ
ãColumnar Databaseã®TiFlashãååšããŸãã(Metadata管çãæ
ãPD Serverã®èª¬æã¯å²æ)ã ãã®æ§æã«ãã£ãŠä»ãŸã§ã®DBã§ãªããªãé£ããã£ãScalabilityã確ä¿ãããã€OLAPç³»ã®åŠçãã¢ããªã±ãŒã·ã§ã³ãæèããããšãªãTiKVãšTiFlashãé©åã«åæ
ããŠé«éã«åŠçãçµæãè¿ããšããã¢ãŒããã¯ãã£ã«ãªã£ãŠããŸãã ãŸããã¹ãã¬ãŒãžã¬ã€ã€ãŒãæ
ãTiKVã®å®æ
ã¯Key-Valueåãšãªã£ãŠãããåããŒãã«ããŒã¿ã忣ããŠæã€ããé«ãèé害æ§ãšã¡ã³ããã³ã¹æã zero-downtimeã§upgradeå¯èœãšãã£ãç¹åŸŽãæã£ãŠããŸãã â»å³å
ã«æžãããŠããããªãŒãžã§ã³ãã¯ããŒã¿ç®¡çã®åäœã§ãããã¯ã©ãŠãã§ãããããå°åããšããæå³ã§ã¯ãããŸãã TiDBã¯ç§éãæ±ãã課é¡ã»èŸãã解決ã§ãããïŒ ã²ãŒã ç¹æã®ã¯ãŒã¯ããŒãã«å¯Ÿããæ©ã¿ããããŸãããããã ãã§ã¯ãªãDatabaseãéçšããŠãããšèª°ããééããèŸããç§ãæ±ããŠããŸãã ããŒã¯æã«ããããã¹ããã¯èšèšã«ãã平垞æã®ãªãœãŒã¹ã®ç¡é§ ç°ãªãã¯ãŒã¯ããŒããéçšã®ããã®Replicaãå€ããããããªãœãŒã¹ã®ç¡é§ OSãMySQLèªäœã®ããŒãžã§ã³ã¢ãããæ§æå€æŽã«ããèšç»åæ¢ TiDBãªããã®èª²é¡å
šéšè§£æ±ºã§ããŸãïŒ(ãšç§éã¯ä¿¡ããŠããŸãïŒ) 1.ããŒã¯æã«ããããã¹ããã¯èšèšã«ãã平垞æã®ãªãœãŒã¹ã®ç¡é§ TiDBã¯ãªã³ã©ã€ã³ã§Nodeã®Scale Out/Inã»Up/Downãå¯èœã§ããã¢ããªã±ãŒã·ã§ã³ã®åŠçã«åœ±é¿ãäžããå¯èœã§ããé©åã«Scaleãããã«ã¯DBãžã®è² è·ãäºæž¬å¯èœã§ãããšããåæã§ãããããŒã¯æã®è² è·ã平垞æã®100~1000åã«ãªããããªã¯ãŒã¯ããŒãã®DBã«å¯ŸããŠã¯ãããã ãã§ããªãã®ã³ã¹ãã¡ãªãããåºããšæããŸãã 2.ç°ãªãã¯ãŒã¯ããŒããéçšã®ããã®Replicaãå€ããããããªãœãŒã¹ã®ç¡é§ 次ã«2ã€ãã®èŸãã§ããOLTPçšãOLAPçšãbackupçšãåæçšãããšåœ±é¿ã®åé¢ãç°ãªãã¯ãŒã¯ããŒãã«å¯ŸããŠReplicaãçšæããæ¥æ¿ã«ãµãŒããŒå°æ°ãå¢ããŠããç¶æ
ãçµéšããŠããŸããäžå®ã®Replicaãå©çšããããçšåºŠã®åé¢ã¯å®å®éçšã®ããã«ã¯æ¬ ãããªãã®ã§ãããåºæ¬çã«å¢å ããŠããäžæ¹ã§ãå¿
èŠã«å¿ããŠçµ±åããŠãããšããã®ã¯ã³ã¹ããããããæžãããŠå€§äžå€«ãã®è©ŠéšãªããŠãã£ãŠãæãªãã§ãããããçŸå®çã«ã¯ãšãŠãé£ããã§ãããã TiDBã§ã¯1ã»ããã§ãããŸãïŒ 3. OSãMySQLèªäœã®ããŒãžã§ã³ã¢ããã«ããæ§æå€æŽã«ããèšç»åæ¢ TiDBã¯ããŒãžã§ã³ã¢ããããªã³ã©ã€ã³ã§ã§ãã¡ãããŸãã忣ã¢ãŒããã¯ãã£ãŒã ããããã§ãããããŒãªã³ã°ã«ããã¢ããã°ã¬ãŒãã§ãããäœãããã®ã·ã¹ãã ã䜿ããŠãŒã¶ãŒãå¥ã·ã¹ãã ã«å¯ŸããŠãµãŒãã¹å©çšäžå¯ã®æéãäœæžããããšãã§ããããžãã¹ã®æ©äŒæå€±ãæå°éã«ããããšãã§ãããšæããŸããtoCã§ãã£ãã24â365ã®ã·ã¹ãã ãªãåããæãåºãç¹åŸŽãªã®ã¯å¿è«ãªã®ã§ããã忢å¯èœãªã·ã¹ãã ã«ãããŠãã¢ããã°ã¬ãŒãã®æ·å±
ãããªãäœããªãã®ã§æ€èšã®äœå°ã¯ãããšæã£ãŠããŸãã ã©ãã«ã§ããã課é¡ã§ããTiDBãªããŸãã£ãšè§£æ±ºã§ããããããããšããã®ãä»ç§éãèããŠããããšã§ãã TiDBã䜿ãããã«è¶
ããªããšãããªãå£ ãããŸã§TiDBãè€ãã¡ãã£ãŠããããã§ãããMySQLããTiDBã«ç§»è¡ãããšãã«å£ããªãããã§ã¯ãããŸãããæããã忣ã¢ãŒããã¯ãã£ã«ããããã©ãŒãã³ã¹ã®åé¡ã倧ããç«ã¡ã¯ã ãããšæã£ãŠããŸãã äŸãã°ãããããããŒãã«èšèšãšããŠAUTO INCREMENTãå©çšããPKãæã€ããšã¯ããããšæããŸãããããããã®ãŸãŸTiDBã§å©çšããå Žåã«ã¯åè¿°ã®ããŒã¿ã®æã¡æ¹ã«èµ·å ããŠãåœè©²ããŒãã«ãžã®æžã蟌ã¿ã¯ç¹å®ãªãŒãžã§ã³(TiKVã§ã®ããŒã¿ç®¡çåäœ)ã«è² è·ãåããããªãã¡æžãèŸŒã¿æã®Hotspotãèªçºãããã©ãŒãã³ã¹ãèœã¡ããšããç¹æ§ããã£ããããŸãã ãŸããTiKVå
éšã§ã¯PK以å€ã®IndexãšããŒãã«ããŒã¿ã«å¯ŸããŠãKVã¬ã³ãŒããããããå¥ã«æã¡ãŸãããããã£ãŠããã©ãŒãã³ã¹ã®èгç¹ã§ã¯ãIndexãçµç±ããããšã§èªã¿åãã³ã¹ããå¢ããŠããŸããªãããã«ãPK以å€ã®Indexãå©çšããªãã§æžãèšèšãããã»ããæãŸããæ°ãããŸãããŸããã¹ãã¬ãŒãžã®èгç¹ã§ã¯Indexãæ¥µåå©çšããªãã»ããäœèšãªKVã¬ã³ãŒããæããªãã§æžã¿ãŸãã ãããã®ããšãããç¹ã«TiDBèªäœã®ã¢ãŒããã¯ãã£ãŒãçè§£ããããã§SQLã®èª¿æŽãããŠãã£ãã»ããè¯ããããšããå°è±¡ã§ãã äºæ³ããã«ã¹ããã¯ãå°æ°ã§ãè¶ãæ¿ããå Žé¢ããããšã¯æããŸãããã³ã¹ãããTiDBã䜿ã£ãŠããããã«ã¯æ€èšŒå¿
é ã ãšèããŠããŸãã ãã ãTiDBã«å
å
ãããŠããKey Visualizeræ©èœããããããªã®ã§ãããé§äœ¿ããŠè§£æ±ºããŠããããšã«ãªããšèããŠããããä»åŸå€§ããªæµãã®1ã€ã«ãªã£ãŠãããšæãããåæ£ç³»DBã®çްããã¢ãŒããã¯ãã£ãŒããã£ããã¢ããããã®ã¯èªåã®äŸ¡å€ãé«ãããããšååãã«ãèããŠããŸãã ãŸãšã TiDBãæ¡çšããå£ã¯ãããã®ã®é©åãªSQLèšèšãè¡ãã°ãé«ãå¯çšæ§ãšèé害æ§ã䞊ã³ã«å€§ããªã³ã¹ãã¡ãªãããåŸãããæ¬¡äžä»£ã®ããŒã¿ããŒã¹ã ãšæããŸããã ãŸããããNew SQLãã ãšèããŠããŸãã ãããŠã¯ãŒã¯ã·ã§ããã«åå ããããšã§è©³çްãªå
éšã®æè¡çãªè§£å床ãé«ãŸãããã£ãšç¥ããããæ€èšŒããŠã¿ããïŒãšããæ°æã¡ã«ãªããŸããã
以åã®èšäº ã§ãåŠçãå®è¡ããŠããéã ã GPU ãå°æãã (æéãæ¯æã) ããã«ãGKE Autopilot ã䜿çšããäŸãæžããŸãããããã«ãããæ°ãã job ãå®è¡ããã ãã§èªåã§ GPU ãå²ãåœãŠãããåŠçãçµããã°éæŸããããã¹ã±ãŒãªã³ã°ãæè»… ãšããç¹ã¯å€ããã®ã®ãã€ã³ãã©ã®çšæã¯ããã£ããæéã§ãã£ãããcluster ã®ç¶æè²»çš ($0.10/h = æã«äžäžåçšåºŠ) ãããããªã©ãæ®å¿µãªãããæè»œãšã¯èšããŸããã ãããªæ… Cloud Run ã« GPU support ã远å ãããïŒ …ãã© ãªããšããæè»œã®ä»£åè©ã®ãã㪠Cloud Run ã§ NVIDIA GPU ã䜿ããããã«ãªã£ã ãšããããšã§ãpreview ã®çŸç¶ã§ã¯ãããŸããã仿§ã確èªããŠã¿ãŸããã çµæã以äžã®å¶éã (ãããã«ã¯ç¹ã«) å³ãããã«æããŸããã Cloud Run ã® CPU always allocated option ãå¿
é (åœç¶ã ã) CPU å²ãåœãŠäžã¯ GPU ãå²ãåœãŠããã (課éããã) NVIDIA L4 GPU ã®ã¿ (ããã¯ãã£ãšæ¡å€§ããŠãã) ã²ãšã€ãã§ãã§ã«ãªããªãã»ã©ïŒãšããçµ¶åŠãªçŽåŸæããããŸãããããã ãš GPU ã䜿ã application ã job ãšããŠãå¿
èŠãªãšãã ãå®è¡ãããçšéã«ã¯åããªãããã§ãã Pricing ã«ãããš Tier-1 region ã§ NVIDIA L4 ã $0.
Graph database ãæ±ã£ãŠã¿ããåå ã®ç¶ãã§ãã ããšããšã¯ Spanner ã graph database ã«å¯Ÿå¿ ãããšããã®ãèŠãã®ãçºç«¯ã ã£ãã®ã§ããããããã Vertex AI samples > neo4j/graph_paysim (Jupyter Notebook) ã«å
¥ããgraph database ã«é¢ããŠã¯èŠçµãã£ããã®ã®ããã®äŸã®åŸåã«ãã Vertex AI ã䜿çšããéšåã«ã¯è§Šããããªãã£ãã®ã§ãä»åã¯ãããèŠãŠã¿ãŸãããããšããçµç·¯ã§ãã Spanner ã® graph database æ©èœã«ã¯äžåé¢ä¿ãªããªã£ãŠããŸãããŸãããã§ãããïŒ ãµã³ãã«ã³ãŒããäœãããŠããããèŠã ååèšäºã§è§Šããããªãã£ããVertex AI samples > neo4j/graph_paysim (Jupyter Notebook) ã®åŸåã§äœãããŠããããèªãã§ã¿ãŸãã Train and deploy a model with Vertex AI ååã§äœæãã train.csv ã GCS ã«çœ®ã ããã dataset ãšããAutoML ã䜿ã£ãŠ train job ãå®è¡ããã prediction type 㯠classification ã§ target column 㯠is_fraudster model ã paysim-prediction-model ãšããŠä¿åãdeploy ãã Loading Data into Vertex AI Feature Store ããã§ Feature Store ãç»å ŽããŸã ååšããªããã°ã€ããã GCS ã«çœ®ãã train.
Spanner ã Graph database ã«å¯Ÿå¿ ãããšããã®ãèŠãŠãã§ã¯äœãã§ããã®ã… ãšãããèããŠããŸããã ãããèªèº«ã¯ IT ãšã³ãžãã¢ã®åºåã§ããæ°åŠã®çŽ é€ã¯ããã£ãããªã®ã§ãããAI ãšã³ãžãã¢ãããŒã¿ãµã€ãšã³ãã£ã¹ãã®ãä»äºã¯ã¹ã ãŒãºã«ãµããŒãã§ããããã«ããŠãããããšæã£ãŠããŸããGraph database ãå¿
èŠãªæ¥åã«å¯ŸããŠè¿
éã«ãµããŒãã§ããããã«ãæ¥é ãã銎æãã§ããããšã倧åã«æããŸããã®ã§ãä»åã¯ãã®ç°å¢ãã€ãã£ãŠè§Šã£ãŠã¿ããšãããŸã§ããã£ãŠã¿ãŸãã Spanner ã察å¿ãããšã¯ãããemulator ã«ãã®æ©èœãã€ããŠãããã¯ãããšããããªãã£ãã®ã§ãä»ã§äžéäžè¬ã«ãã䜿ãããŠããããªãã®ãæ¢ããŠã¿ãŸãããSpanner èªäœã¯è²»çšããããããšãšãSpanner ãã®ãã®ã®ç¹åŸŽãæ··ãã£ãŠããããã«æããããã®ã§ãä»å㯠graph DB ã«ç¹åããä»ã®ãã®ã䜿ã£ãŠã¿ãŸãã 以äžãããã®æ
å ±ããšã£ã€ãããããã«æããããŸãããGoogle Cloud ã®èšäºã§ããããããåã®ãã®ã§ Neo4j ãšãã database ã䜿çšããŠããŸãã Neo4j ãš Google Cloud Vertex AI ã§ããã¹ããŒã㪠AI åãã®ã°ã©ãã䜿çšãã Vertex AI samples > neo4j/graph_paysim (Jupyter Notebook) Graph DB ãäœéšãããšãããŸã§ãªãããã®æé ã«åŸã£ãŠ local ã«éããŠè²»çšãæ°ã«ãã宿œã§ãããã§ãã äžèš GitHub ã«çœ®ãããŠãã Jupyter Notebook (.ipynb) ã®æé ããªãã£ãŠãããŸãããä»å㯠local ã§ææ©ãæžãŸãããã Notebook ã§ã¯ãªã python ãçŽæ¥äœ¿çšããŸãã ãšããããç°å¢ãã€ãã ãã€ããªãã Visual Studio Code ã® Dev Container æ©èœã䜿çšããŸããä»ã®ç°å¢ããå©çšã®æ¹ã¯ãææ°ã§ããã以äžã®æ§ç¯æé ãåèã«ããŠç°å¢æ§ç¯ããŠãã ããã
ãã¯ãæè¿ã¯äžæ¥å®¶ã§éãããŠãããšã人éããã AI ãšäŒè©±ããŠããã»ããå€ãæ¥ããããããããŸãããå€ã«åºãã«ãå±éºãªæ¥å·®ãã§ã粟ç¥ã®å¥åº·ãä¿ã€ã®ã«å·¥å€«ãå¿
èŠãªæ¥ã
ãšæããŸã ð ããŠããªã以åããæ ç»ãªã©ã§ã¯ã人éããµããŒããã AI ãèšå€§ãªç¥èãšåªãã倿åã䜿ã£ãŠçŽ æ©ã解決æ¡ãæç€ºãã䞻人å
¬ãå©ãããšããã·ãŒã³ãããèŠãŸããããã§äž»äººå
¬ã¯ãã®ææ¡ã«å¯ŸããŠããããããã§é Œãããšããã£ãšèšãããã§ãããAI ãå®è¡ãŸã§ãã¡ãããšäž»äººå
¬ãããªããŠããããªã£ãŠããŸãã®ã§ãæ ç»ã§ã¯äœãããåé¡ãèµ·ããŠäººéãã¡ã掻èºããããã£ã±ãæåããã¡ã°ããïŒããšãªããªããå€ãã§ãã ãšããããã AI ã«å®è¡ãŸã§ããŠããããããªããç¹ã«çŸå®äžçã§ã¯ããããªæ¥œãªããšã¯ç¡ãã§ãã æ¥ã
äŒè©±ããŠãã AIãäŒè©±ã§å¿çãåŸãã ãã§ãªããå®éã«è¡åãããä»çµã¿ã远å ããããšãã§ããŸããä»åã¯ããã詊ããŠæ ç»ã®äžçã«äžæ©è¿ã¥ããŸãããã Vertex AI Function Calling Vertex AI ã«ã¯ãAI ã®å€æã«åºã¥ã㊠(AI model ã®) å€éšã®æ©èœãåŒã³åºãæ©èœããããŸãã Generative AI on Vertex AI > Function calling ãã¡ãã«æ²¿ã£ãŠè©ŠããŠã¿ãŸãã äºåæºå ãã€ããªãã Visual Studio Code ã® Dev Container æ©èœã䜿çšããŸããä»ã®ç°å¢ããå©çšã®æ¹ã¯ãææ°ã§ããã以äžã®æ§ç¯æé ãåèã«ããŠç°å¢æ§ç¯ããŠãã ããã ãã®ããã°ã§ã¯ä»ã«ã Dev Container ã«é¢ããèšäº ããããŸããDev Container ã£ãŠäœ? ãšæãããããã«ãã芧ããã ããã幞ãã§ãã host åŽ Vertex AI ã®å©çšã«å¿
èŠãª Google Cloud èªèšŒã¯ãhost åŽã® application default authentictation ã䜿çšããŸããhost åŽã§ä»¥äžãè¡ã£ãŠãããŸãã(host åŽã« Cloud SDK ã® install ãå¿
èŠã§ã)
ãã·ã€ã§ãã æ¡åŒµæ§ãé«ã Kubernetesãæ§ã
ãªæ©èœã»ãœãããŠã§ã¢ããKubernetes ãåããæ©èœæ¡åŒµã®ä»çµã¿ã§ãã operator ã controller ã§æäŸãããã®ãèŠãããã«ãªããŸãããGitLab Operator ã®ãããªè€é㪠application ããMySQL Operator ã®ããã« database æ©èœãæäŸãããã®ããããŸããããåçŽãªæ©èœãšããŠã¯ãPod ãªã©ãç£èŠãã€ã€æ¡ä»¶ã«å¿ã㊠scaling ã backup ãããªã©ã®æ©èœãèããããŸãã Kubernetes ã® Operator pattern ã«èª¬æãããŠãã Operators ã¯ãKubernetes èªäœã«æããããããšãªã controller ã custom resource ã䜿ããcluster ã§ã® deploy ã workload 管çãæ¡åŒµãããã®ãšãããŠããŸãã ãã®åŒ·åãªæ©èœã掻çšã§ãããšéåžžã«å¿åŒ·ããã§ãããäœããæ·å±
ãé«ãããªã®ããããã§ãã仿¥ã¯ãã®æ·å±
ãå°ãã§ãäžãããããcustom controller ã®å®è£
ãäœéšããŠã¿ãããšæããŸãã äºåæºå: Dev Container ãš kind controller ãéçºããã«ãããããããå®è¡ãã Kubernetes cluster ãå¿
èŠã§ããããã§ã¯ãkind ã䜿ããŸããkind 㯠Kubernetes èªäœã®éçºã«ã䜿ãããŠãããã®ã§ã軜é㪠Kubernetes cluster ãå®è¡ã§ããŸãã ãããã§ã«ä»ã® Kubernetes cluster ç°å¢ããæã¡ã§ããã°ããã¡ããå©çšããããšãã§ãããšæããŸãããèªèº«ã®ç°å¢ã«åãããŠã»ããã¢ããããŠãã ããã ä»åã¯ãéçºç°å¢æ§ç¯ã« Visual Studio Code ã® Dev Container æ©èœã䜿çšããŸããDev Container ã¯ãcontainer ã䜿çšããŠéçºç°å¢ãæ§ç¯ãã匷åãªæ©èœã§ããéçºç°å¢æ§ç¯ãã³ãŒãåããŠå
±æããããéçºç°å¢ãéé¢ããŠãã¹ãããããã«ä¿ã€ããšãã§ããŸãããã®ããã°ã§ã¯ä»ã«ã Dev Container ã«é¢ããèšäº ãããã€ãæžããŠããã®ã§ããã²èŠãŠã¿ãŠãã ããã
ã¯ããã« NewSQLãšããŠæ³šç®ãéããŠããTiDBã«ã€ããŠãä»åã¯ãã®ãµãŒãã¬ã¹DBaaSã§ããTiDB ServelessãåãäžããŸãã TiDB Serverless ã¯ç¡åã§å©çšéå§ã§ãåŸé課éã§ãããšããç¹åŸŽã®ä»ã«ãAIãå©çšããŠèªç¶èšèªããã¯ãšãªãçæããŠããã Chat2Query ãšããæ©èœãããã®ã§ãããã詊ããŠã¿ãŸãã ç°å¢æ§ç¯ å°ãã¬ã¬ã·ãŒãªã²ãŒã ã®ãããã°çšç°å¢ã®DB(MySQL5.7.x)ãããããŒã¿ãTiDB Serverlessã«çªã£èŸŒãã§Chat2Queryãéã«æ±ãããšãããããªæ€èšŒãè¡ããŸããã ãŸãTiDB Serverlessã«ããŒã¿ãæå
¥ããå¿
èŠããããŸããä»åã¯ãIaaSäžã§åããŠããMySQLãéçšããŠããã°çãããªãã§ãããã mysqldump ã³ãã³ãã§ååŸãããããŒã¿(DDL蟌ã¿)ãæã£ãŠããŠS3ã«é
眮ããTiDB Serverlessã®Importã§èªã¿åããŸãããããããæ®å¿µãªããããããããŒã¿ãImportã¯èªãã§ãããŸããã ããŒã¿ãæå
¥ããã«ã¯ãImportãèªãã圢åŒã«åãããå¿
èŠããããŸãã Naming Conventions for Data Import Import CSV Files from Amazon S3 or GCS into TiDB Cloud ããŒã¿å å·¥ãèããã®ã¯å°ãé¢åã ãªããšæã£ãŠãããšãããPingCAPã®æ¹ããTiDBçšã®ããŒã«çŸ€ã§ãã tiup ã«å«ãŸããdumpããŒã¿ååŸããŒã« dumpling Dumpling Overview | PingCAP Docs ã䜿ãã°åé¡ç¡ããšããã¢ããã€ã¹ãããã ããŸããã tiup dumpling ã®å
·äœçãªå©ç𿹿³ãšããŠã以äžã®ãããªã³ãã³ããæããŠè²°ã£ãŠããŸãã tiup dumpling \ -u "dbuser" \ -p "******"" \ -P 4000 \ -h <host> \ -F 256MiB \ -o "<s3 Bucket>" \ --s3.
ããã«ã¡ã¯ããã·ã€ã§ã ð Internet è¶ãã® API åŒã³åºããããäžè¬çã«ãªã£ãããšããäœãã public cloud ã§ã®éçšãå¢ããæšä»ãnetwork ã®é
å»¶ã packet loss ã¯æ¥åžžçãªãã®ãšããŠèªèããŠããå¿
èŠããããŸããserver application ã®éçºã§ããæ®æ®µãããã®ãããªç°å¢ã§ã®åäœã§åé¡ãçºçããªãã確èªããŠããããšãéèŠã§ãããã Docker ã䜿ã£ãŠäœå質 network ç°å¢ãæš¡å£ãã ä»åã¯ãnetwork é
å»¶ã®ãããªç¶æ³ãæ€èšŒããããç°å¢ã Docker ãå©çšããŠæ§ç¯ããŠã¿ãŸãã ãã¡ã ãåèã«ãããŠããã ããŸããã äžã®èšäºã§ããã§ã« Docker Compose ã§å®è¡ã§ããããã«ãªã£ãŠããŸãããVS Code ã® Dev Container ã§åäœãããš network éä¿¡ãå«ãã·ã¹ãã éçºã«äŸ¿å©ããã ãªãšæã£ãã®ã§ãããããæŽæ°ã»æé©åãããŠã¿ãŸããã ãŸããä»åã®å
容ã¯ç°å¢ã«å·Šå³ããã床åãã倧ãããããªã®ã§ã泚æãã ããã以äžã®ç°å¢ã§åäœã確èªããŠããŸãã macOS Sonoma + Docker Desktop Windows 11 Enterprise + Docker Desktop (WSL ã䜿çšããªãã»è£è¶³ãåç
§) æ§æãšå¿
èŠãªãã©ã«ãæ§æ Dev Container ãå©çšããã«ãããã以äžã®ãã©ã«ãæ§æãã€ãããŸãã(VS Code + Dev Containers extension ã®å°å
¥ãåæãšããŠããŸã) ãŒããããããšãããããã©ãã§ãããã€ãããã¡ã€ã«ã¯ 3 ã€ã ãã§ãã workspace ââ .devcontainer/ â ââ client/ â ââ Dockerfile â ââ compose.
ããã«ã¡ã¯ããã·ã€ã§ã ð ä»åã¯ãèšäºã¿ã€ãã«ãèŠãŠãã±ã£ãšã€ã¡ãŒãžãã«ãã話é¡ã§ããã¡ãã£ãšè€éã§ãããŸã説æã§ãããèªä¿¡ããªãã§ãããã²ãšã€ãã€é ã远ã£ãŠæžããŠã¿ãŸãã ã¡ãªã¿ã« (ãã€ãããã§ãã) èšäºã®å
容ã¯åŒç€Ÿãã¹ãŠã®ã·ã¹ãã ã§æ¡çšããŠããæè¡ã»ããªã·ãŒã§ã¯ãªããã²ãšã€ã®è§£æ±ºæ¡ãšããŠãèããã ããã å€éš API åŒã³åºãããããµãŒããŒã§ã®ããããæ©ã¿ web ã¢ããªã±ãŒã·ã§ã³ãªã©ã§ããªã¯ãšã¹ããåãããµãŒããŒãããã«å€éšã® API åŒã³åºããããããšã£ãŠãããããŸãããããããŠããã®ã€ã³ã¿ãŒãããæä»£ããããã£ã API åŒã³åºãã¯å€±æããããšãããã°ã¿ã€ã ã¢ãŠãããããšããããããŸãããšã©ãŒãè¿ã£ãŠãããªããŸã ãããããŸããã£ããã©ãããããããªãå Žåã¯ãã©ããããããã§ãããã? ä»åã¯ãããã¹ã¿ãŒãå°ç¹ã«ããŠãã©ããã£ã解決ãèããããããèŠãŠãããŸãã ã¡ãªã¿ã«ä»åã®å¯Ÿè±¡ã¯ãæ°çŸããªãæ°ç§ããããããªåŠçã§ãæ¯èŒçæéã¯ããããã²ãšã€ã²ãšã€ã®éä¿¡ã®ç¢ºå®æ§ãéèŠãããã®ãå
žåçã«ã¯ãã¢ããªå
é貚ãå·®ãåŒããŠã¢ã€ãã ãåŸãããããªãã®ãæ³å®ããŠããŸãã ãµãŒããŒéä¿¡ãšãã£ãŠããããé »åºŠãé«ãäœã¬ã€ãã³ã·ãŒãèŠæ±ãããªã¢ã«ã¿ã€ã æ§ã®é«ããã® (ãªã³ã©ã€ã³ã¢ã¯ã·ã§ã³ã²ãŒã çã§äœ¿çšããããã®) ããããŸããããããã£ãçšéã«ã¯ãŸã£ããå¥ã®ä»çµã¿ãçšããããŸãã®ã§ãä»åã®èšäºã§ã¯æ±ããŸããã ãªãã©ã€ãšèª²é¡ API åŒã³åºãã倱æãããšãããŸãèããããã®ã¯ãªãã©ã€ã§ããnetwork ããã€ã 100% å®å
šãšèšããªã以äžããªãã©ã€ããããšèªäœã¯å¿
é ã§ããããããããããã§ããã€ãåé¡ããããŸãã API ã¯ã»ããšãã«å€±æããã®ã? ã¿ã€ã ã¢ãŠãããŠããå Žåãå®ã¯çµæãåŸãããŠããªãã ãã§ãAPI ã®åŠçèªäœã¯æåããŠãããããããªã ãã®å Žåããªãã©ã€ãããšãäºå (以äž) æäœããããšã«ãªã£ãŠããŸããªãã ãªãã©ã€ãããšããŠãåæ°ãšãééã奿©ã»ããªã¬ãŒæ¡ä»¶ã¯ã©ããããããã äžè¬çãªè§£æ±ºçãšããŠãåŠçã®åªçæ§ãš exponential backoff ããããŸããã²ãšã€ãã€èŠãŠãããŸãã åªçãªåŠçãšããŠå®è£
ãã (idempotent ã«ãã) API ãªã©ã®æ©èœãå®è£
ãããšããããªãå
¥åã§ããã°è€æ°ååŒã³åºãããŠãäžåã®å®è¡ãšçµæãå€ãããªãããã«ããŸããããšãã°ãããŠãŒã¶ãŒã®ã¹ã³ã¢ã« 300 ãè¶³ãåŠçã§ããªãã©ã€ãããããšãã£ãŠäºåè¶³ã㊠600 ã«ãªã£ã¡ãããšããºã€ã§ãã åªçã§ãªãåŠç äžåç®) user_id 1000 ã®ã¹ã³ã¢ã« 300 ãè¶³ã â { user_id: 1000, score: 300 } äºåç® (ãªãã©ã€)) user_id 1000 ã®ã¹ã³ã¢ã« 300 ãè¶³ã â { user_id: 1000, score: 600 } åªçãªåŠç
ããã«ã¡ã¯ãã¯ã©ãŠããšã³ãžãã¢ã®ã¿ã±ãŠãã§ãã ã¹ã¯ãŠã§ã¢ã»ãšããã¯ã¹ã«å
¥ç€ŸãããŸã§ã¯äž»ã«AWSç°å¢ã§ã®äœæ¥ãæ¥åãšããŠããã åã㊠Google Cloud API ã«ã€ããŠåŠç¿ããæ©äŒããã£ãã®ã§ã Compute Engine ãªãœãŒã¹ã®åºæ¬æäœã Python ã©ã€ãã©ãªãå©çšããŠå®æœããå Žåã«ã€ããŠãŸãšããŠãããŸãã 䞻㫠Compute Engine ãªãœãŒã¹ã®åºæ¬æäœãå
ã« Python ã©ã€ãã©ãªãå©çšããŠåããŠå®æœããæ¹åãã®æ
å ±ã«ãªããŸãã ã»ããã¢ãã Python èªäœã®èšå®ã«ã€ããŠã¯ä»åã¯å²æããŸãããç§ã宿œããç°å¢ã¯ wsl2 + ubuntu + pyenv + venv ã§ãã ãŸãããã©ã«ãã®èªèšŒæ
å ±ãèšå®ããããã«ãgcloud ã³ãã³ããå¥éã»ããã¢ããããŠå©çšããŸããã å
¬åŒããã¥ã¡ã³ããšããŠPythonç°å¢ã®ã»ããã¢ããã«ã€ããŠãçšæãããŠããã®ã§ã Python ç°å¢ãæåããèšå®ããå Žåã¯åèã«ããããšãã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ããã©ã«ãèªèšŒæ
å ±ã®èšå® Google Cloud API ãå©çšããå Žåã«ã¢ããªã±ãŒã·ã§ã³ã®ããã©ã«ãã®èªèšŒæ
å ±ãèšå®ããŸãã ä»åã«ã€ããŠã¯å
¬åŒããã¥ã¡ã³ãã®éãã«ããŒã«ã«éçºç°å¢çšã®èªèšŒæ
å ±ãçšæããŸããã èªèšŒæ
å ±äœæã® gcloud ã³ãã³ããå®è¡ãããšãã©ãŠã¶ã«é·ç§»ããã®ã§ç»é¢ã®æç€ºéãã«é²ãããš ããã©ã«ãã®èªèšŒæ
å ±ã$HOME/.config/gcloud/application_default_credentials.jsonãšããŠäœæãããŸããã ã©ã€ãã©ãªã®ã€ã³ã¹ããŒã« ä»åã«ã€ããŠã¯åºæ¬ç㪠google-cloud-compute ã«å ã㊠google-auth ãã€ã³ã¹ããŒã«ããŠå©çšããŸãã å
·äœçãªå©ç𿹿³ã«ã€ããŠã¯åŸè¿°ããŸãã google-auth ã¯äŸå€åŠçã«å©çšããŸãã ãŸãäŸåé¢ä¿ã«ãã£ãŠä»ã®ã©ã€ãã©ãªãåæã«ã€ã³ã¹ããŒã«ãããä»åã¯ãã®äžã® google-api-core ã«ã€ããŠãäŸå€åŠçã«å©çšããŸãã ä»åå¿
èŠãªã©ã€ãã©ãªã以äžã®ããã«ã€ã³ã¹ããŒã«ããŸãã pip install google-cloud-compute google-auth ã€ã³ã¹ã¿ã³ã¹ã®ç¶æ
ååŸãèµ·åã忢 èªèšŒæ
å ±ãã©ã€ãã©ãªã®çšæãã§ãããæ©éã€ã³ã¹ã¿ã³ã¹ã®ç¶æ
ååŸãèµ·åã忢ã«ã€ããŠèŠãŠãããŸãã ã€ã³ã¹ã¿ã³ã¹ã®ç¶æ
ååŸ ä»åã¯ä»¥äžã®ãããŒã§äœæããŸããã ãã£ã«ã¿ãŒã玹ä»ããããlistã§ååŸããããã«ããŠããŸããã getãšããã¡ãœããã§åäžã®ã€ã³ã¹ã¿ã³ã¹ãååŸããããšãå¯èœã§ãã èªèšŒæ
å ±ãå©çšããŠInstancesClientãçšæ å¿
èŠãªå€æ°ãªã©ãå®çŸ©ããŠListInstancesRequestãçšæ çšæããã¯ã©ã€ã¢ã³ããšãªã¯ãšã¹ãã䜿çšããŠã€ã³ã¹ã¿ã³ã¹ã®ãªã¹ããååŸ
ã¯ãããŸããŠïŒã€ã³ãã©ãšã³ãžãã¢ã®ãºããºãã§ãã ä»åã¯ãçŽè¿ã§ç§ã®æ
åœããæ¡ä»¶ã§è¡ã£ãæ€èšŒãããŠããŠãšããŠæ®ããšããæå³ã§ä»¥äžã«ã€ããŠã話ãããŠããã ããããšæããŸãïŒ ãMySQL8.0ã§innodb_buffer_pool_sizeããªã³ã©ã€ã³ã§çž®å°ãããšãã£ãŠã©ããªåœ±é¿ãããã®ã§ããããã ãŸãåãã«ãã®ãã©ã¡ãŒã¿ãèšå®ããããšã«ããå©ç¹ã§ãããinnodb_buffer_pool_sizeãèšå®ããããšã§ãInnoDBãã¢ã¯ã»ã¹æã«ããŒãã«ãã€ã³ããã¯ã¹ããŒã¿ãã¡ã¢ãªå
ã§ãã£ãã·ã¥ããããã®é åã確ä¿ã§ããŸãã ããã«ããããã£ã¹ã¯I/Oã®åæ°ãæžãããŠããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã MySQLã䜿ã£ãŠããæ¹ã¯å€ããšæããŸãããinnodb_buffer_pool_sizeã¯ãã¥ãŒãã³ã°ã®ä»£è¡šçãªãã©ã¡ãŒã¿ã®1ã€ã ãšèªèããŠããŸãã ãšã¯ããããªã³ã©ã€ã³ã§æ¡åŒµããããšã¯ãã£ãŠãçž®å°ããã®ã¯ç§ãåããŠã®æ©äŒã§ããã(çž®å°ããããšã§ã¹ããŒã¯ãšãªã®çºçãå¢ããŠãµãŒãã¹åœ±é¿ãåºãå¯èœæ§ããããããã¡ã¢ãªãè¶³ããªããªãã¹ããã¯ã¢ããã®å€æãããã¡) ä»åã¯ãã®innodb_buffer_pool_sizeã®å€ãæšå¥šå€â»ã®50%ïœ75%ã倧ããè¶
ããŠå²ãåœãŠãè¡ã£ãŠããããšã«ãããã¡ã¢ãªäžè¶³ãèµ·ãããŠããŸã£ãã®ã§ãæšå¥šå€ã«åãŸãããã«çž®å°ããã«ãããã圱é¿ã確èªããããã«ä»åã®æ€èšŒã宿œããããšãšãªããŸããã â»æšå¥šããã innodb_buffer_pool_size å€ã¯ãã·ã¹ãã ã¡ã¢ãªãŒã® 50 ãã 75% æ€èšŒåã®æ³å®ã§ã¯ãçž®å°ã«äŒŽãdirty pagesã®ãã©ãã·ã¥ãçºçããããšã§ãã£ã¹ã¯I/OãçºçããŠäžæçã«ããã©ãŒãã³ã¹ãäœäžããã®ã§ã¯ïŒãšãããããã«èããŠããŸããã æ€èšŒè©³çް æ€èšŒç°å¢ MySQLããŒãžã§ã³ïŒ8.0.34 æ§æïŒInnoDBCluster(ã·ã³ã°ã«ãã©ã€ããª) å®ã¡ã¢ãªïŒ256GB äºåæºå èªäœã®warmupã¹ã¯ãªãããå®è¡ããäºåã«æ¬çªç°å¢ãšpages_dataãæããŠãããŸãã æ€èšŒæ¹æ³ æ€èšŒç°å¢ã«å¯ŸããŠsysbenchã䜿ã£ãŠ700qpsã®è² è·ãããç¶ããŠããç¶æ
ã§dirty pagesãæ¬çªç°å¢ãšåçã«ãªã£ãããšã確èªããã®ã¡ããset global innodb_buffer_pool_size = 167,772,160ããå®è¡(220Gbâ160GB)ããçž®å°æã®åœ±é¿ã確èªããŸããã æ€èšŒçµæ ã19:28:32ãã«set globalãå®è¡ãã7ã€ã®ç¢ºèªãã€ã³ããšãã®ååŸã®åçš®å€ã以äžã«èšèŒããŸãã [1] innodb_buffer_pool_sizeã®å€æŽã«ããã£ãæé 倿Žèªäœã¯1ç§æªæºã§å®äºããŠããŸãã[19:28:30] Variable_name Value innodb_buffer_pool_size 236223201280 [19:28:31] Variable_name Value innodb_buffer_pool_size 236223201280 [19:28:32] â
set globalå®è¡ããªãµã€ãºéå§ Variable_name Value innodb_buffer_pool_size 171798691840 [19:28:33] Variable_name Value innodb_buffer_pool_size 171798691840 [19:28:34] Variable_name Value innodb_buffer_pool_size 171798691840 [2] innodb_buffer_pool_pages_dataã®å€æŽã«ããã£ãæé innodb_buffer_pool_sizeãšåæ§ã«ã倿Žèªäœã¯1ç§æªæºã§å®äºããŠããŸãã[19:28:30] Innodb_buffer_pool_pages_data 14409408 Innodb_buffer_pool_bytes_data 236083740672 [19:28:31] Innodb_buffer_pool_pages_data 14409408 Innodb_buffer_pool_bytes_data 236083740672 [19:28:32] â
set globalå®è¡ããªãµã€ãºéå§ Innodb_buffer_pool_pages_data 14365499 Innodb_buffer_pool_bytes_data 235364335616 [19:28:33] Innodb_buffer_pool_pages_data 10687130 Innodb_buffer_pool_bytes_data 175097937920 [19:28:34] Innodb_buffer_pool_pages_data 10498607 Innodb_buffer_pool_bytes_data 172009177088 [3] innodb_buffer_poolã®ãªãµã€ãºã«ãããæé ãªãµã€ãºãCompletedã«ãªããŸã§çŽ20ç§çšããã£ãŠããŸãããInnodb_buffer_pool_resize_statusããªããŠå€ããããªããŠåããŠç¥ããŸããã â»ãªã³ã©ã€ã³ãããã¡ããŒã«ã®ãµã€ãºå€æŽã®é²è¡ç¶æ³ã®ç£èŠ
ã¯ããã« ãã®èšäºãèŠã€ãããã©ãåŸã§èŠãããšæã£ãããã®ããªãïŒ ãã²äžã®ãã¿ã³ãããããã·ã¥ã¿ã° #ããã°ãªåŒ ã§ãã€ãŒãããŠãããŸãããïŒ ããã«ã¡ããã°ãªãè²è€ãããŸã ãã ä»å㯠AWS ããã³ Terraform ã®åçŽè
åãã«ãããã°ãªåŒïŒ AWS ã®åºæ¬çãªãããã¯ãŒã¯ãŸãšãããã玹ä»ããŸãïŒ åçŽè
ã£ãŠïŒ ããã°ãªåŒã§ã¯ãäžèšã®ããã«ã¬ãã«ãèšå®ããŠããŸãã åçŽè
ïŒåããŠã¯ã©ãŠããµãŒãã¹ãå©çšãã人ã§ãåºæ¬çãªæäœïŒäŸïŒãã¡ã€ã«ã®ä¿åãããµãŒããŒã®èµ·åïŒãã€ã³ã¿ãŒãã§ãŒã¹ãéããŠè¡ãããšãã§ããŸãããŸããã·ã³ãã«ãªã»ãã¥ãªãã£ã«ãŒã«ã®èšå®ããäžéšã®åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«å¯Ÿå¿ã§ããŸãã äžçŽè
ïŒããæ·±ãç¥èãæã¡ãã³ãŒããçšããŠæäœãèªååããããããè€éãªã¿ã¹ã¯ïŒäŸïŒèªåã§ãµãŒããŒã®æ°ã墿žãããïŒãè¡ããŸãããŸããããé«åºŠãªç£èŠããå
šäœã®ã·ã¹ãã èšèšãšå®è£
ã«ã€ããŠçè§£ããããŸãã äžçŽè
ïŒå¹
åºãæ·±ãç¥èãæã¡ãå€§èŠæš¡ã§è€éãªã·ã¹ãã ãèšèšãå®è£
ãç¶æããèœåããããŸããæå
端ã®ãã¯ãããžãŒã掻çšããå®å
šæ§ãèé害æ§ãå¹çæ§ãæå€§åããããã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ãªãäžèšã¯ ChatGPT ã«ããåºåã§ããããã®èšäºã§ã»ãã«çæ AI ã«ãã£ãŠåºåãããæç« ã¯ãããŸããããã ããèšäºã®ãã©ããã«ã¯çæ AI ãå©çšããŠããŸãã ããã°ãªåŒã£ãŠïŒ è²è€ãããŸãäœæããããã°èšäºã®ãã©ã³ãåã§ããããŸãæ°ã«ããèªã¿é£ã°ããŠãã ããã äœãæžãã®ïŒ 以äžã®éãã§ãã ãã®èšäºã§æžãããš AWS ã®ãããã¯ãŒã¯ã«é¢é£ãããµãŒãã¹ã®äžéš 詳解ãããµãŒãã¹ã®åºæ¬çãªå
容 ãã®èšäºã§æžããªãããš AWS ã®ãµãŒãã¹ã®è©³è§£ AWS ã®ãµãŒãã¹ã®å¿çš ãµã³ãã«ã³ãŒã æ§ç¯ã®ãã¹ããã©ã¯ãã£ã¹ å
責äºé
ãã®èšäºã«æžãããŠããããšã¯åŒç€Ÿã®æèŠã代衚ãããã®ã§ã¯ãããŸããã ãã®èšäºã«æžãããŠããããšã«ã¯äžå®ã®èª¿æ»ãšæ€èšŒã宿œããŠãããŸãããééããååšãããããšã¯ãæ¿ç¥ããäžããã AWS ã®åºæ¬çãªãããã¯ãŒã¯ãŸãšã AWS ã®åºæ¬ãšèšãã°ãããã¯ãŒã¯ãç¹ã« VPC ã§ãããåçšã§æ§ç¯ããããšãã«ã¯ãS3 㯠VPC ã²ãŒããŠã§ã€ã䜿ãã¹ãããšãã£ã話ãå¹³æ°ã§åºãŠããŸãã
ããã«ã¡ã¯ããã·ã€ã§ã ð 以åã®èšäº ã§ããã¯ãã«æ€çŽ¢ãæ°è»œã«è©ŠãäŸãã玹ä»ããŸãããããããã®ãã¯ãã«æ€çŽ¢ãå®éã©ã®ãããªçšéã«åœ¹ç«ã€ã®ã§ãããããååã¯ã¢ã€ãã£ã¢æ¬¡ç¬¬… ãšæ¿ããŠçµãããŸããããä»åã¯ã²ãšã€ãã®å
·äœäŸãèããŠã¿ãŸãããã Image captioning ååã®èšäºã§ã¯ãdatabase (Redis) ã«ä¿åãããããã¹ãããŒã¿ã«å¯Ÿã㊠embedding ãçæãããããçšããŠæ€çŽ¢ããäŸãå®è¡ããŠã¿ãŸãããããã¹ãã«å¯ŸããŠæ€çŽ¢ãããšããã®ã¯æ³åãããããã§ããã察象ãããã¹ãã§ããã°ãªããªãæ£èŠè¡šçŸãªã©ãçšããŠãæ€çŽ¢ãã§ãããã®ãªã®ã§ããããŸã§ããããã¿ãæããªããããããŸããã ãšããããšã§ãä»åã¯ç»åã察象ã«ããŠã¿ãŸããããã¹ãã§ç»åãæ€çŽ¢ãããããªãµãŒãã¹ãã€ãããããããããšå¯èœæ§ãåºããããã§ãã web ãæ€çŽ¢ãããšãAI ãçšããŠç»åãã£ãã·ã§ã³ãçæããäŸãªã©ãããèŠãããããã«ãªããŸããã äŸ: Using GPT4 with Vision to tag and caption images OpenAI ãäœããšè©±é¡ã§ã¯ãããŸãããä»åã¯ãããã®éœåã§ãå©çšãããã Vertex AI ã® API ã䜿çšããŠã¿ãŸãã ããããšã¯ ãã¡ã ã®äŸã®ãŸãŸã§ããPython ã®ç°å¢ãšããµã³ãã«ã®ç»åãã¡ã€ã«ãããã°æºåãæŽããŸãã(Google Cloud 㯠billing æå¹ã§èªèšŒããã®åæã§… ð) ãããªæãã® AI ã®äŸãšããŠãã䜿ãããŠããç»å ãé©åœã«çšæããŠå®è¡ããŠã¿ããšããã以äžã®ãããªçµæãåŸãããŸããã $ python app.py ['an astronaut is riding a horse on mars'] ããããã§ãïŒ ã·ã¹ãã å
šäœã®æ§ææ¡ Google Cloud ã䜿ã£ãŠãç»åãã¡ã€ã«ã®ä¿åãšæ€çŽ¢ã®ã·ã¹ãã ãæ€èšããŠã¿ãŸããã(å®èšŒããŠããŸãããä»®æ³ã®ãã®ã§ã) Image uploader service ã¯ããšã³ããŠãŒã¶ãŒã upload ããç»åãã¡ã€ã«ãåãåããCloud Storage ã«ä¿åããŸãããŸããdatabase ã«ãã®ãã¡ã€ã«ã«ã€ããŠã®ãšã³ããªãä¿åããŸãããã®æç¹ã§ã¯ embedding (vector) ã¯ç©ºã§ããå¥ã® service ã« embedding çæãæç€ºããããã«ãå¿
èŠãªæ
å ±ã Pub/Sub ã«éä¿¡ããŠåŠçãçµãããŸãã Embedding generator service ã¯ãPub/Sub ããã³ãã³ããåãåãã察象ã®ç»åãã¡ã€ã«ã Cloud Storage ããååŸã㊠image caption ãçæããããã«ãã® embedding ãçæããŸããããã«ã¯ Vertex AI ã® API ã䜿ããŸãããä»ã® AI service ãçšããããšããã¡ããã§ããŸããçæãã embedding 㯠database ã®è©²åœè¡ã« update ããŸãã Search service ã¯ããŠãŒã¶ãŒã®å
¥åããããã¹ããåãåããembedding ãçæããããæ¡ä»¶ã«ã㊠database ã«ä¿åããããã®ã«å¯Ÿããã¯ãã«æ€çŽ¢ããããŸããåŸãããçµæã«ããšã¥ããŠãCloud Storage ã«ä¿åãããç»åãååŸããŠãŠãŒã¶ãŒã«è¡šç€ºããŸãã ããã§å®çŸãã§ãããã§ããããã§äœ¿ã database ã¯ãååã®èšäºã§ãã玹ä»ãã Redis ã䜿ã£ãŠãããã§ãããGoogle Cloud ã§ã Big Query ãªã©ãã¯ãã«æ€çŽ¢ã«å¯Ÿå¿ãã database ããããããšãããŸãã®ã§çšéã«åã£ããã®ãéžãã§ã¿ãŠãã ããã
ããŒã¿ããŒã¹ã®èšèšãéçšã«ãããŠããšã³ãžãã¢ãæãé ãæ©ãŸããåé¡ã®äžã€ã«ãããŒã¿ã®äžæŽåãé²ãããšãããããšæããŸããããã¯ä¿¡é Œæ§ãããã©ãŒãã³ã¹ã®åäžã«çŽçµãããã®ãšãªããŸãã MySQL InnoDB Clusterã¯ãè€æ°ã®MySQLãµãŒããŒéã§ããŒã¿ãåæããäžè²«æ§ã®ããããŒã¿ããŒã¹ãæäŸããããã®åŒ·åãªä»çµã¿ãšãªããã®ã§ãã ããã§InnoDB Clusterã®åºæ¬æŠå¿µããäž»èŠã³ã³ããŒãã³ãã®åœ¹å²ã«ã€ããŠãŸãšããŠã¿ãŸããã MySQL InnoDB Clusterãšã¯ MySQLããŒã¿ããŒã¹ã«ãããŠé«å¯çšæ§ãå®çŸããããã®æè¡ã§ãèªåãã§ã€ã«ãªãŒããŒæ©èœãæäŸããŸãã ããã«ãããããŒã¿ããŒã¹ã·ã¹ãã ã®ããŠã³ã¿ã€ã ãæå°éã«æããããšãå¯èœã«ãªããŸãã MySQL InnoDB Clusterã䜿çšããç®çãšçç± InnoDB Clusterã¯ãè€æ°ã®ããŒã¿ããŒã¹ãµãŒããŒãçµã¿åãããŠäžã€ã®ãã¯ã©ã¹ã¿ããšããŠæ©èœãããããšã§ã以äžã®ãããªå©ç¹ãæäŸããŸãã ã¯ã©ã¹ã¿ãšã¯ãè€æ°ã®ãµãŒããŒãååããŠäžã€ã®çµ±äžãããã·ã¹ãã ãšããŠåäœããããšãæããŸãã ããã«ãããé«å¯çšæ§ãããŒã¿ã®äžè²«æ§ãã¹ã±ãŒã©ããªãã£ãªã©ã®ç®çãéæã§ããŸãã é«å¯çšæ§ã®ç¢ºä¿ ã¯ã©ã¹ã¿å
ã®ãµãŒããŒéã§èªåãã§ã€ã«ãªãŒããŒãšãã§ã€ã«ããã¯æ©èœãæäŸããã·ã¹ãã ã®ããŠã³ã¿ã€ã ãæå°éã«æããŸãã ããŒã¿ã®äžè²«æ§ãšæŽåæ§ ã¯ã©ã¹ã¿å
ã§åäœããŠããåã
ã®ããŒã¿ããŒã¹ãµãŒããŒïŒããŒãïŒãããŒã¿ããªã¢ã«ã¿ã€ã ã§åæããããšãå¯èœã«ããã¯ã©ã¹ã¿å
ã®ãã¹ãŠã®ããŒãéã§ãã©ã³ã¶ã¯ã·ã§ã³ããªã¢ã«ã¿ã€ã ã§åæãããŸãã ã·ã¹ãã ã®ã¹ã±ãŒã©ããªã㣠ã¯ã©ã¹ã¿å
ã®ããŒããæè»ã«è¿œå ãŸãã¯åé€ããããšãå¯èœã§ããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®æé·ã«åãããŠããŒã¿ããŒã¹ã®ãªãœãŒã¹ãã¹ã±ãŒãªã³ã°ããããšãã§ããŸãã ãã®ä»å¯çšæ§æãšã®æ¯èŒ MySQLã¬ããªã±ãŒã·ã§ã³ ãã¹ã¿ãŒã®é害çºçæã«ã¹ã¬ãŒããææ°ã®ç¶æ
ã§ãªãå ŽåãããŒã¿ã®ãã¹ãçºçãããªã¹ã¯ããããŸãã é害æã«ã¹ã¬ãŒãããã¹ã¿ãŒã«ææ ŒããåŸã«ãã¢ããªã±ãŒã·ã§ã³ã®æ¥ç¶åãæ¿ãäœæ¥ãå¿
é ãšãªããŸãã MHA for MySQL InnoDB Clusterãšåããã§ã€ã«ãªãŒããŒãèªååããŸããããã§ã€ã«ãªãŒããŒããã»ã¹ã«ã¯æ°ç§ããæ°åã®ããŠã³ã¿ã€ã ãçºçããããšããããŸãã äžåºŠãã¹ã¿ãŒããå€ããããŒãïŒå
ã®ãã¹ã¿ãŒïŒã®åŸ©æ§ãšåçµ±åã«ã¯æåã§ã®ä»å
¥ãå¿
èŠãšãªããŸãã MySQL Cluster(NDB Cluster) InnoDBã§å©çšã§ããŸããã MySQL InnoDB Clusterã®äž»èŠã³ã³ããŒãã³ããšãã®åœ¹å² 以äžã«ãInnoDB Clusterã圢æããäž»èŠãªã³ã³ããŒãã³ãã玹ä»ãããããããã©ã®ãããªåœ¹å²ãæãããŠãããã説æããŸãã MySQL Group Replication ããŒã¿ã®äžè²«æ§ãšæŽåæ§ãä¿ã€ããã®ã¬ããªã±ãŒã·ã§ã³æ©èœãæäŸããŸãã MySQL Router ã¢ããªã±ãŒã·ã§ã³ããã®ãªã¯ãšã¹ããé©åãªããŒã¿ããŒã¹ãµãŒããŒã«ã«ãŒãã£ã³ã°ããŸãã MySQL Shell ã¯ã©ã¹ã¿ã®èšå®ãç£èŠã管çã®äžå
åãè¡ãããŒã«ã§ãã æ§æå³ ç°¡åãªæ§æå³ãšããŠã¯ãã®ããã«ãªããŸãã ããããã©ã®ããã«é£æºããåé·æ§ãæ
ä¿ããŠããããã³ã³ããŒãã³ãåäœã§èª¬æããŸãã
ãã¯ãã«æ€çŽ¢ äžé㯠AI è±çãããããªãã¯ã¯ã©ãŠãåç€Ÿã®æ°æ©èœçºè¡šã§ã AI é¢é£ã®æ©èœãçãæ²¢å±±ã§ãã AI ã¢ã·ã¹ã¿ã³ããšã®ãã£ãããç»åã®çæãšãã£ãæ©èœãããããããäŸã§ãããä»ã«ãæ¯èŒçå°å³ã§ã¯ããã€ã€åŒ·åãªæ©èœããããããããŸãã仿¥ã¯ãããã£ãæ©èœã®äžããããã¯ãã«æ€çŽ¢ãåãäžããŠã¿ãããšæããŸãã ããšãã° Google Cloud ã§ã¯ AlloyDB ã BigQuery ããã¯ãã«æ€çŽ¢ã«å¯Ÿå¿ãã database ãšããŠååãããã£ãŠããŸããBigQuery ã§ã¯ model ã® deploy ã instance ãçšæããå¿
èŠãªã SQL ããçŽæ¥å©çšãã§ã éåžžã«äŸ¿å©ããã§ãã ãã®æ©èœãšããŠã¯ãæ¢ãããããšãæžãããŠããææžãæ¢ãããé¡äŒŒããç»åãæ¢ãããã§ããããããããšå¿çšã®å€¢ãåºãããã®ã§ããããããã©ãããŠã AI é¢é£ã®æ©èœã¯ãã§ã… ãé«ãã®ã§ã¯?ããšããå°è±¡ãã€ããŸãšããŸããå®éãBigQuery ãšãããããªã³ã¯ãã¯ãããŠãã Vertex AI é¢ä¿ã® pricing ã®ããŒãž ãèŠãŸããããå®éã«ãã£ãŠã¿ãåã«ããçšåºŠæ£ç¢ºã«èŠç©ããã®ã¯ããããã§ã¯ãªããšããå°è±¡ãåããŸããã ããã§ä»åã¯ããã®å€¢ã®ãããã¯ãã«æ€çŽ¢ããè²»çšã«å¿é
ç¡ãäœéšããŠã¿ãããšæããŸãã äºåæºå : database ãšã㊠Redis ãçšæãã ç¹ã«æ±çšãã£ãã·ã¥ãšããŠäººæ°ãããæ§ã
ãªå Žæã§æŽ»çšãããŠãã Redis ã§ããããã¯ãã«æ€çŽ¢ã«å¯Ÿå¿ãã database ã®ã²ãšã€ã§ããã¯ã©ãŠãäžã®ãããŒãžããµãŒãã¹ãšããŠãå©çšå¯èœãªéžæè¢ãå€ãã§ããããã¡ããããŒã«ã«ã§å®è¡ãã§ããŸãã®ã§ãä»åã¯ããã§è©ŠããŠã¿ãããšæããŸãã ãã¯ãã«æ€çŽ¢ã¯ãRedis ã®æ¡åŒµçã§ãã Redis Stack ã§å©çšå¯èœãšã®ããšãªã®ã§ãããããæè»œã« Docker ã§èµ·åããŠã¿ãŸãããã¡ã ã« Docker ã§èµ·åããããã®ããã¥ã¡ã³ãããããŸãã docker run -it --rm -d redis/redis-stack äœã®è¿œå èšå®ãå¿
èŠãªããããã©ã«ãèšå®ã§åé¡ãªãèµ·åããŸããã 念ã®ãã以äžã®ããã«åäœç¢ºèªã ãããŠãããŸããã(æºåãšããŠã¯äžèŠãªã¹ãããã§ã) èµ·åãã container ã® shell ã«å
¥ã£ãŠããµã³ãã«ããŒã¿ ã load ãããŠã¿ãŸãã
Dev Container ãã¡ã³ã®ãã·ã€ã§ãã ãããšæè¿ãŸã§ Intel CPU æèŒã® MacBook ã䜿ã£ãŠããã®ã§ãããçµå¹Žã«ã¯åãŠããæŽæ°ã®ããã«ãµã ãã®äœæ¥ç°å¢ã Apple ã·ãªã³ã³æèŒã® MacBook ã«åãæ¿ããŸããã ããããéçºã¿ãŒã²ãã (ãµãŒããŒç°å¢) ã¯åŒãç¶ã Intel ã倧倿°ã§ãããããŒã ã§ã¯ Windows ã§ã®éçºãæ··åšããŠããã®ã§ãéçºããã¹ã㯠Intel (ãšããã amd64 ãŸã㯠x86_64) ã§è¡ãã®ãæãŸããç¶æ³ã§ããç¹ã«ãéçºå¯Ÿè±¡ã« native library ãžã®äŸåããã£ãããããšãªãããã§ãããã Container ãšããã Docker ã®ç¶æ³ Docker ã§ã¯ãApple ã·ãªã³ã³ Mac ã§ã以äžã®ããã«ã㊠--platform ãæå®ããã° x86_64 ã§åäœãããããšãã§ããŸãã ⯠docker run -it --rm --platform=linux/amd64 ubuntu root@a88443f3296c:/# arch x86_64 ãã®ãšãã䜿çšããã container image ããã¡ãã amd64 ã®ãã®ã pull ãããŠãããDocker CLI ã§ã¯ãããã«ããã®ã§ãããDocker Desktop ã§ããã° image ã®äžèŠ§ã§ AMD64 ããŒã¯ãä»ããŠè¡šç€ºãããå€å¥ãããããªã£ãŠããŸãã(äžã®æ¹ã§åèã«ãªãç»åã貌ã£ãŠãããŸã) VS Code Dev Container å®è¡ç°å¢ã¯ãããšããŠãVisual Studio Code ã® Dev Container æ©èœã«ã¯ããå°ãè€éãªç¶æ³ããããŸãã