Upgrade to Pro — share decks privately, control downloads, hide ads and more …

VertexAIで構築したMLOps基盤の取り組み

 VertexAIで構築したMLOps基盤の取り組み

株式会社CAMではエンタメ領域をはじめとした様々のサービスを運用しており,それらに対して機械学習によるレコメンドロジックが提供されています。

本セッションでは,機械学習によるレコメンドを提供するために構築したMLOps基盤について,加えて基盤構築に使用したGoogle CloudのサービスであるVertex AIについてお話しします。
Vertex AIはリリースされたばかりのサービスであるため,活用事例が少なく構築に困難が伴いました。そのため,成功事例と今後の課題を交えて紹介したいと思います。

CyberAgent
PRO

July 08, 2022
Tweet

More Decks by CyberAgent

Other Decks in Technology

Transcript

  1. ݪ ࿨ر 2021೥౓ ৽ଔೖࣾ גࣜձࣾCAM ػցֶशΤϯδχΞ @harappa80 @harappa80

  2. ݪ ࿨ر 2021೥౓ ৽ଔೖࣾ גࣜձࣾCAM ػցֶशΤϯδχΞ @harappa80 @harappa80

  3. 1. ࠓ೔࿩͢͜ͱ 2. CAMʹ͍ͭͯ 3. MLOpsͱ͸ʁͳͥඞཁʁ 4. CAMͰͷٕज़બఆ 5. VertexAIͷ֓ཁ

    6. MLOpsج൫ͷߏ੒ 7. ӡ༻ͯ͠Έͯͷར఺ 8. ։ൃ/ӡ༻Ͱࠔ೉ͳ఺ 9. ج൫ͷվળ఺ 10. ·ͱΊ ໨࣍
  4. 1. ࠓ೔࿩͢͜ͱ • MLOpsͱ͸ͳʹ͔ • ͲͷΑ͏ͳߟ͑ͰMLOpsج൫Λߏங͔ͨ͠ • VertexAIΛ׆༻ͯ͠ߴ଎Ͱج൫Λߏஙͨ͠ࣄྫ • ૝ఆ͢Δࢹௌऀ

    • ͜Ε͔ΒMLOpsΛಋೖ͠Α͏ͱ͍ͯ͠Δํ • VertexAI΁ͱҠ؅Λݕ౼͍ͯ͠Δํ
  5. 2. CAMʹ͍ͭͯ • αΠόʔΤʔδΣϯτάϧʔϓ࠷ݹࢀͷࢠձࣾ • ΤϯλϝɺϥΠϑελΠϧɺϏδωεόϥΤςΟϝσΟΞΛओ࣠ ͱͨ͠ଟ਺ͷWebαʔϏεΛల։ •ձࣾ঺հ

  6. 2. CAMʹ͍ͭͯ • Fensi Platformͱ͍͏ࣾ಺ͷαʔϏε։ൃج൫Λ׆༻ •αʔϏε։ൃʹඞཁͳڞ௨ػೳΛఏڙ 
 → αʔϏε։ൃΛߴ଎Խ •౷Ұͨ͠ϩάϑΥʔϚοτͰσʔλΛऩू

    
 → ϨϙʔςΟϯά΍ϨίϝϯυΛڞ௨ͷ࢓૊ΈͰಋೖ •σʔλपΓͷಛ௃
  7. 3. MLOpsͱ͸ʁͳͥඞཁʁ

  8. MLOpsͱ͸ •MLOpsͱ͸DevOpsͱMachine Learningͷ଄ޠ •ػցֶशγεςϜͷϓϩμΫτ΁ͷಋೖͱ
 ͦͷ؅ཧΛԁ׈/ਝ଎Խ͢ΔͨΊͷٕज़ͱΞϓϩʔν

  9. ͳͥMLOps͕ඞཁʁ

  10. ػցֶशγεςϜΛܧଓతʹӡ༻͠ ϢʔβʔʹՁ஋Λಧ͚ΔͨΊ

  11. ϩʔΧϧ։ൃ/ Notebook MLOpsج൫͕ͳ͍৔߹ • ൃੜ͠͏Δোน • ͲͷΑ͏ʹͯ͠ϓϩμΫτ΁ͱಋೖ͢Δʁ • ϓϩμΫτಋೖ·Ͱʹ͕͔͔࣌ؒΔ •

    ϩʔΧϧݕূ࣌ͱಉ౳ͷਫ਼౓Λຊ൪Ͱอূग़དྷͳ͍ • ೔ʑͷϢʔβʔΠϯλϥΫγϣϯΛܧଓతʹ࠶ֶशग़དྷͳ͍ • Ϟσϧͷਫ਼౓ྼԽʹؾ͕෇͔ͳ͍ DS MLϞσϧ
  12. ػցֶशϞσϧΛ։ൃ͢Δ໨త ˚ ߴਫ਼౓ͳϞσϧΛ࡞ΔͨΊ ˕ αʔϏεʹಋೖ͠ɼϢʔβʔʹՁ஋Λܧଓతʹಧ͚ΔͨΊ →͜ΕΛαϙʔτ͢Δͷ͕MLOpsج൫ͷ໾ׂ

  13. Ϗδωε্Ͱ͸ϓϩμΫτ΁ͷಋೖΛҙࣝͨ͠ ػցֶशϞσϧͷ։ൃ͕ॏཁ

  14. • ػցֶशϞσϧΛֶश͢Δίʔυ͸ɼػցֶशγεςϜΛߏ੒͢Δཁૉͷ͏ͪͷҰ෦෼ • ֶशҎ֎ʹ΋ଟ͘ͷॲཧ͕ඞཁͰ͋ΓɼෳࡶʹೖΓ૊ΜͰ͍Δ •MLOpsج൫ͷ੹຿͸͜ΕΒΛ౷߹తʹ؅ཧ/ӡ༻Մೳͳ؀ڥΛఏڙ͢Δ͜ͱ ࢀরݩɿHidden Technical Debt in Machine

    Learning Systems MLOpsج൫ͷ੹຿
  15. • ԼهͷΑ͏ͳίϯϙʔωϯτΛਖ਼͔֬ͭਖ਼͍͠ॱংͰ೔ʑܧଓతʹ࣮ߦ͢Δඞཁ͕͋Δ • Ϟσϧͷਫ਼౓؂ࢹ΍ɼޙʹੜ੒෺Λ௥੻ग़དྷΔ࢓૊Έ΋ඞཁ
 ࢀরݩɿTFX: A TensorFlow-Based Production-Scale Machine Learning

    Platform MLOpsج൫ͷ੹຿
  16. MLOpsج൫͕͋Δ৔߹ • ࣮ݱग़དྷΔ͜ͱ • DS͕։ൃͨ͠ϞσϧΛਝ଎ʹαʔϏεͱ΁ಋೖɾվળ • ܧଓతʹ࠷৽ͷσʔλͰϞσϧΛ࠶ֶश • ϞσϧؒͷA/Bςετ •

    Ϟσϧͷਫ਼౓ྼԽ΍ಛ௃ྔͷҟৗΛݕग़ DS MLϞσϧ MLOpsج൫ • ࠶ֶश • A/B Test
  17. MLOps͸҆ఆͯ͠ػցֶशϞσϧΛӡ༻͢Δ্Ͱͷඞਢٕज़

  18. 4.CAMͰͷٕज़બఆ

  19. CAMͰͷٕज़બఆ •MLOpsΛ࣮ݱ͢ΔͨΊͷٕज़ɾϑϨʔϜϫʔΫ • OSSɿ • MLFlowɿ༰қʹ࣮ݧ؅ཧՄೳ • AirflowɿػցֶशʹಛԽͨ͠΋ͷͰ͸ͳ͍ • KubeflowɿεέʔϦϯά͢ΔɻKubernetesͷ؀ڥ͕ඞཁ

    • Ϋϥ΢υɿ • VertexAI(Google Cloud) • Sagemaker(AWS)
 → ݁࿦ͱͯ͠ɼCAMͰ͸VertexAIΛ࠾༻/ ӡ༻
  20. CAMͰͷٕज़બఆ •VertexAIΛ࠾༻ͨ͠ཧ༝ 1. ૉૣ͘ج൫Λ࡞੒ग़དྷΔ͜ͱ
 →ϑϧϚωʔδυͳαʔϏε 2. ࿈ܞ͕༰қͳ͜ͱ
 →σʔλج൫͕GCPʹ͋ΔͨΊಉ؀ڥ͕ཧ૝ 3. Pipeline͕OSSͷKubeFlow

    Pipelinesͱޓ׵
 →ެ։͞ΕͨίϯϙʔωϯτΛ࠶ར༻Մೳ 4. ֤ίϯϙʔωϯτͷϚγϯεϖοΫΛॊೈʹࢦఆՄೳ
 →ֶश΍લॲཧʹ͸ϋΠεϖοΫͳϚγϯ͕ඞཁ
  21. 5.VertexAIͷ֓ཁ

  22. 5. VertexAIͷ֓ཁ ࢀরݩ: https://cloud.google.com/blog/ja/topics/developers-practitioners/new-ml-learning-path-vertex-ai • 2021೥5݄ʹGCP্ͰϦϦʔε • CAMͰ͸൒೥ޙʹຊ൪Քಇ։࢝ • AI

    Platform, AutoML, MLܥͷAPIαʔϏεʢVisionAPI, Natural Language APIͳͲʣ͕౷߹͞ΕͨϓϥοτϑΥʔϜ
  23. • ʮֶश༻σʔλͷੜ੒ʙਪ࿦݁Ռͷग़ྗʯ·ͰΛΧόʔ͢Δඞཁੑ͕͋Δ •ɹ֤छλεΫΛΧόʔ͢ΔαʔϏε͕໢ཏతʹଘࡏ 5. VertexAIͷ֓ཁ •VertexAIͱMLϫʔΫϑϩʔͷରԠ

  24. 6.MLOpsج൫ͷߏ੒

  25. 6.MLOpsج൫ͷߏ੒ •ج൫ͷશମਤ

  26. 6.MLOpsج൫ͷߏ੒ ᶃύΠϓϥΠϯίϯϙʔωϯτͷ࡞੒ • ػցֶशʹඞཁͳλεΫ͝ͱʹίϯςφΛ࡞੒ɼGCR΁Push • CloudBuildͰCI/CD؀ڥΛ੔උˠ։ൃ/ຊ൪؀ڥͰಉ༷ͷॲཧ • ෳ਺ͷϞσϧؒͰڞ௨Խɾ࠶ར༻͢Δ͜ͱΛҙࣝͯ͠։ൃ • ެ։͞ΕͨίϯϙʔωϯτΛ࠶ར༻΋Մೳ

  27. 6.MLOpsج൫ͷߏ੒ ᶄύΠϓϥΠϯఆٛͷ࡞੒ • ࡞੒͞Εͨίϯϙʔωϯτͷ࣮ߦॱংͱύϥϝʔλΛఆٛ • CloudBuildͰίϯύΠϧͯ͠ɼPipeline࣮ߦ༻ͷjsonΛGCS΁֨ೲ͓ͯ͘͠

  28. 6.MLOpsج൫ͷߏ੒ ᶅֶश༻σʔληοτͷ࡞੒ • BigQueryʹ஝ੵ͞ΕͨϩάΛݩʹಛ௃ྔΛ೔ʑੜ੒ • ੜ੒͞Εͨಛ௃ྔ͸VertexAI Feature Storeʹ֨ೲ • BigQuery

    + Feature StoreΛࢀরֶͯ͠श༻σʔληοτΛ
 ఆظతʹ࡞੒͢Δ • CloudComposerͰఆظ࣮ߦ
  29. 6.MLOpsج൫ͷߏ੒ ᶆύΠϓϥΠϯͷఆظ࣮ߦ • CloudComposerͰVertexAI PipelineΛεέδϡʔϧ࣮ߦ • GCS΁֨ೲࡁͷPipeline࣮ߦ༻ͷjsonΛݩʹ࣮ߦ • GCR΁PushࡁͷίϯςφΛॱ࣮࣍ߦ •

    ੜ੒෺ʢֶशσʔλ/ධՁࢦඪ/ϞσϧͳͲʣ͸Metadataʹ֨ೲ • ϞσϧσϓϩΠͷͨΊʹModel RegistryʹPush
  30. 6.MLOpsج൫ͷߏ੒ ᶇBatch/Online༧ଌͷ࣮ߦ • VertexAI PredictionͰ༧ଌΛ࣮ߦ • ϞσϧʹରԠͨ͠༧ଌ༻ίϯςφΛ༻ҙ͢Δඞཁ͕͋Δ • Batch༧ଌɿ •

    ೖྗɿGCSʹ֨ೲࡁͷJson • ग़ྗɿBigQuery·ͨ͸GCSʹग़ྗ • ෳ਺ϚγϯͰͷฒྻॲཧ΋Մೳ • Online༧ଌɿ • ༧ଌΛฦ͢ΤϯυϙΠϯτ͕࡞੒͞ΕΔ • ϚγϯεϖοΫΛॊೈʹࢦఆՄೳ
  31. 6.MLOpsج൫ͷߏ੒ •ج൫ͷશମਤ

  32. 7. ӡ༻ͯ͠ͷར఺ • ֤ίϯϙʔωϯτͷ࣮ߦதͷΈΠϯελϯε্ཱ͕ͪ͛Δ • ίετΛ཈͑Δ͜ͱ͕Մೳ • ੜ੒෺ͷ؅ཧ͕༰қ • ίϯϙʔωϯτͷInput/Output͑͞ఆٛ͢Ε͹ɼ


    ҙࣝ͢Δ͜ͱͳ͘GCS&VertexAI Metadataʹอଘ͞ΕΔ • ϚγϯεϖοΫΛॊೈʹઃఆग़དྷΔ
  33. 8. ։ൃ/ӡ༻Ͱࠔ೉ͳ఺ • ίϯϙʔωϯτͷ࡞੒ํ๏ • Container Base: 
 Model΍MetricsͷܕʹະରԠͰ͋Γɼ࣮ߦ࣌ϝλσʔλ ʢexecutor_inputʣΛࢀরͨ͠ϋοΫతͳ࣮૷͕ඞཁ

    • Python-Function Base:
 શͯͷܕʹରԠͯ͠Δ͕ɼPipelineఆٛͷίʔυʹ
 ίϯϙʔωϯτ಺ͷॲཧΛશͯهड़͢Δඞཁ͕͋Δ →ίʔυྔ͕গͳ͍؆қతͳPipelineͰ͋Ε͹͓͢͢Ί •ίϯϙʔωϯτͷίϯςφԽ࣌ʹະରԠͷੜ੒෺ͷܕ͕͋Δ
  34. 9. ج൫ͷվળ఺ • ֤ίϯϙʔωϯτʹର͢Δςετͷಋೖ • Skew/Driftͷݕग़ػೳͷ௥Ճ • VertexAI Model MonitoringΛݕ౼த

  35. 10. ·ͱΊ • MLOps͸҆ఆͯ͠ػցֶशϞσϧΛӡ༻͢Δ্Ͱͷඞਢٕज़ • VertexAIΛ׆༻͢Δ͜ͱͰߴ଎ʹج൫ΛߏஙՄೳ • ೖࣾ1೥໨ͷࣗ෼Ͱ͑͞΋൒೥Ͱߏங/ຊ൪ಋೖग़དྷͨ ΑΓৄࡉͳ಺༰ɿ •

    Vertex AIΛ׆༻ͨ͠MLOpsͷ࣮ݱʲલฤʳ • Vertex AIΛ׆༻ͨ͠MLOpsͷ࣮ݱʲޙฤʳ