第8回 MLOps 勉強会 Tokyo (Online) https://mlops.connpass.com/event/211953/
©2021 Wantedly, Inc.%7$Λ׆༻ͨ͠ػցֶशύΠϓϥΠϯ։ൃͷߴԽୈ8ճ MLOps ษڧձ Tokyo (Online)Takayuki Kasai (@unblee) Wantedly, Inc.2021.6.16
View Slide
©2021 Wantedly, Inc.͢͜ͱ8BOUFEMZ7JTJUͷ.BUDIJOHνʔϜͷػցֶशύΠϓϥΠϯ։ൃʹ͓͍ͯൃੜ͍ͯͨ͠ͱͦΕΛղܾ͢ΔͨΊʹ࠾ͬͨΞϓϩʔνʹ͍ͭͯհ͠·͢
©2021 Wantedly, Inc. ։ൃڥͷ طଘπʔϧͷػೳͱ ͬͨ͜ͱ ݁ՌͲ͏ͳ͔ͬͨ ݱঢ়ͷ՝͢͜ͱ
©2021 Wantedly, Inc.։ൃڥͷ
©2021 Wantedly, Inc.ػցֶशύΠϓϥΠϯ ։ൃڥͷw ύΠϓϥΠϯͷྲྀΕࣗମγϯϓϧw ։ൃओʹLT্ͷ1PEͰߦ͍ͬͯΔ• ຊ൪ͱ։ൃڥͷ࠶ݱੑͷ୲อͱϦιʔεʢओʹϝϞϦʣΛεέʔϧͤ͞ΔͨΊw ୯ମͰϫʔΫϑϩʔΤϯδϯ͍ͬͯͳ͍• ϚΠΫϩαʔϏεؒΛ·͙ͨґଘؔΛ͍࣋ͬͯΔ߹ Argo Workflows Λར༻͍ͯ͠Δઆ໌ͷ୯७ԽͷͨΊʹৄࡉলུ#JH2VFSZ QSFQSPDFTTPS[email protected] USBJO #JH2VFSZதؒग़ྗQSFEJDUதؒग़ྗ தؒग़ྗ
©2021 Wantedly, Inc. ։ൃڥͷ#JH2VFSZ QSFQSPDFTTPS[email protected] USBJO #JH2VFSZதؒग़ྗQSFEJDUதؒग़ྗ தؒग़ྗw શମͷ࣮ߦ͕࣌ؒͱ͍ͯw ։ൃதʹ్தͷεςοϓΛมߋ͢Δͱ࠷ॳ͔ΒΓ͢ඞཁ͕͋Δ• Ճ͑ͯɺPod ্Ͱ࣮࣌ؒߦͯ͠์͓ͬͯ͘ͱʢk8s ͷʣGC Ͱσʔλ͕ফ͑Δέʔε͕ଘࡏͨ͠
©2021 Wantedly, Inc.Ξϓϩʔν ։ൃڥͷ#JH2VFSZ QSFQSPDFTTPS[email protected] USBJO #JH2VFSZதؒग़ྗQSFEJDUதؒग़ྗ தؒग़ྗw ֤εςοϓͷߴԽࣦഊͨ͠w தؒग़ྗͷΩϟογϡԽ
©2021 Wantedly, Inc.தؒੜΛΩϟογϡͱͯ͠׆༻͢Δ͜ͱʹΑͬͯ։ൃதʹ͓͚ΔσʔλύΠϓϥΠϯͷ్த͔Βͷ࠶࣮ߦʹ͔͔Δ࣌ؒͱ֤εςοϓͷ࣮ߦසΛݮ͢Δΰʔϧ ։ൃڥͷ
©2021 Wantedly, Inc.ୡ͢ΔͨΊʹΔ͜ͱɾཁ݅ ։ൃڥͷඞཁͳதؒੜ͕ੜࡁΈͷεςοϓͷ࣮ߦΛεΩοϓ͢Δ• ظͨ͠ग़ྗ͕͢ͰʹߦΘΕ͍ͯͨΒͦͷεςοϓΛεΩοϓग़དྷΔ• தؒੜΛར༻͢ΔࡍࣗಈతʹదͳͷΛબͯ͠ར༻ग़དྷΔΑ͏ʹ͢Δ• ຊ൪ڥΩϟογϡϛεΛආ͚͍ͨڥͰΩϟογϡΛແޮԽग़དྷΔҰੜͨ͠தؒੜΛʢPod ͷআʹΑͬͯʣฆࣦ͠ͳ͍Α͏ʹ͢Δ• ֤εςοϓऴྃ࣌ʹதؒੜΛ GCS ͔Կ͔͠Βͷ֎෦ετϨʔδʹΞοϓϩʔυग़དྷΔ• ϩʔΧϧετϨʔδʹೖྗͱͯ͠ඞཁͳதؒੜ͕ଘࡏ͠ͳ͍ͱ͖ GCS ֎෦ετϨʔδʹଘࡏ͢ΔదͳதؒੜΛ୳ࡧͦ͠ΕΛೖྗͱͯ͠ར༻ग़དྷΔ
©2021 Wantedly, Inc.طଘπʔϧͷػೳͱ
©2021 Wantedly, Inc.طଘπʔϧ طଘπʔϧͷػೳͱ࣮ݧཧతͳଆ໘ҎԼͷࢿྉ͕ࢀߟʹͳΓ·͢ୈ4ճ MLOps ษڧձhttps://mlops.connpass.com/event/202359/Data Version Control ʹΑΔ࣮ݧཧͷ࣮Ͱͷద༻ࣄྫ https://speakerdeck.com/sansandsoc/an-experiment-management-example-by-data-version-controlDSOC R&Dݚڀһ ߴڮ ࣏w %7$IUUQTEWDPSHw ػցֶशϓϩδΣΫτΛόʔδϣϯཧ͢ΔͨΊͷ$-*πʔϧw ύΠϓϥΠϯͷ࣮ߦཧػೳؚ͕·ΕΔ
©2021 Wantedly, Inc.%7$ͷػೳ طଘπʔϧͷػೳͱw ύΠϓϥΠϯͷ࣮ߦίϚϯυw AEWDSFQSPAw ࣮ߦ͢ΔͨΊʹҎԼͷϑΝΠϧ͕ඞཁw EWDZBNMw EWDMPDLʢͪ͜ΒίϚϯυ࣮ߦޙʹࣗಈੜ͞ΕΔʣ
©2021 Wantedly, Inc.࣮ߦͷྲྀΕEWDZBNM EWDMPDLAEWDSFQSPAಡΈࠐΈ ࣮ߦɾੜطଘπʔϧͷػೳͱ
©2021 Wantedly, Inc.%7$ͷػೳ طଘπʔϧͷػೳͱEWDZBNMύΠϓϥΠϯͰ࣮ߦ͢ΔίϚϯυͱͦͷग़ྗϑΝΠϧɺ֤εςʔδؒͷґଘؔΛهड़͢ΔεςʔδؒͷґଘؔΛεςʔδ໊Ͱͳ͘ɺϑΝΠϧ୯ҐͰදݱ͍ͯ͠Δͷ͕ಛత
©2021 Wantedly, Inc.%7$ͷػೳ طଘπʔϧͷػೳͱEWDMPDL֤εςʔδͷग़ྗϑΝΠϧͱґଘ͍ͯ͠ΔϑΝΠϧͷϋογϡɾϑΝΠϧαΠζΛܭࢉͯ͠ه͢Δʢdvc ίϚϯυʹΑͬͯࣗಈੜ͞ΕΔʣϋογϡͱϑΝΠϧαΠζΛݩʹΩϟογϡ͕୳ࡧ͞ΕΔʢϩʔΧϧ or ϦϞʔτʣ
©2021 Wantedly, Inc.࣮ߦ͢Δ࣮ߦ͢Δ࣮ߦΛεΩοϓ͢Δ࣮ߦͷྲྀΕ طଘπʔϧͷػೳͱճ 4UBHF" 4UBHF;4UBHF#தؒग़ྗ" தؒग़ྗ# EWDMPDLϑΝΠϧύεɾϋογϡɾϑΝΠϧαΠζ͕ه͞ΕΔ/ճ 4UBHF" 4UBHF;4UBHF#`தؒग़ྗ" தؒग़ྗ#`EWDMPDLه͞ΕͨϋογϡɾϑΝΠϧαΠζͷҰகͱதؒग़ྗ"ϑΝΠϧͷଘࡏΛ֬ೝهͷதʹҰக͢Δͷ͕ͳ͍ϑΝΠϧ͕ଘࡏ͠ͳ͍
©2021 Wantedly, Inc.தؒग़ྗͷύεཧ͕େม طଘπʔϧͷػೳͱ• ґଘؔཧͷͨΊʹϑΝΠϧύε͕େྔʹฒͿͨΊอकੑɾՄಡੑ͕͔ͳΓ͍ཁҼ• DVC ʹ͓͚Δεςʔδؒͷґଘؔͷදݱํ๏͕ґଘઌͷλεΫ໊Ͱͳ͘ɺ֤εςʔδʹ͓͚Δೖग़ྗϑΝΠϧ୯Ґʹͳ͍ͬͯΔ• εςʔδʹ͓͚Δґଘઌɾग़ྗϑΝΠϧΛ dvc.yaml ʹྻڍ͢Δඞཁ͕͋ΔͷͰɺґଘؔΛදݱ͔ͨͬͨ͠Βґଘ͞ΕΔεςʔδͷग़ྗϑΝΠϧϦετΛґଘ͢ΔεςʔδͷґଘϑΝΠϧϦετʹॏෳͯ͠ॻ͘ඞཁ͕͋Δ• શͯͷεςʔδͰڞ௨ͯ͠ґଘ͢ΔϑΝΠϧʢe.g. poetry.lockʣ͕͋Δ߹ɺશͯͷεςʔδʹಉ͡ͷΛॻ͘ඞཁ͕͋Δ• dvc.yaml ͱίʔυதͰϑΝΠϧύεͷ߹ੑΛอͭඞཁੑ͕͋Δ• ࡉ੍͔͍ޚΓ͍͢ͱ͍͏ϝϦοτ͋Δ͕զʑʹͱͬͯա
©2021 Wantedly, Inc.தؒग़ྗͷύεཧ͕େม طଘπʔϧͷػೳͱզʑʹͱͬͯաͳϙΠϯτ• ґଘؔͷදݱํ๏͕λεΫ୯ҐͰͳ͘ɺϑΝΠϧ୯Ґʹͳ͍ͬͯΔ• ґଘઌͱग़ྗઌͰॏෳͯ͠ϑΝΠϧύεΛॻ͘ඞཁ͕͋ΔվળͰ͖ͦ͏ͳϙΠϯτ• ґଘؔΛεςʔδ୯Ґʹ͍ͨ͠• ϑΝΠϧύεͷॏෳཧΛͨ͘͠ͳ͍• ॻ͘ͷ1Օॴ͚ͩʹ͍ͨ͠• ڞ௨ͯ͠ґଘ͢ΔϑΝΠϧॻ͘ͷ1Օॴ͚ͩʹ͍ͨ͠• dvc.yaml ͷݟ௨͠ͱΞΫηεੑΛվળ͍ͨ͠• dvc.yaml ͷՄಡੑΛ্͍͛ͨ• Python ίʔυ͔Β؆୯ʹΞΫηε͍ͨ͠
©2021 Wantedly, Inc.ͬͨ͜ͱ
©2021 Wantedly, Inc.EWDͷ8SBQQFSπʔϧΛ࡞ͬͨίʔυδΣωϨʔλ• զʑͷ։ൃڥͰศརʹ͏ͨΊͷઐ༻ Config ΛಡΈࠐΉ• dvc.yaml, stageouts.pyʢ͜ͷޙઆ໌ʣ Λੜ͢ΔύΠϓϥΠϯͷ࣮ߦ• ύΠϓϥΠϯͷ࣮ߦࣗମ dvc repro Λͦͷ··ར༻• GCS ͷೝূ• Ωϟογϡͷ Pull/Push ͷࣗಈԽ
©2021 Wantedly, Inc.σΟϨΫτϦߏ
©2021 Wantedly, Inc.࣮ߦͷྲྀΕઐ༻$POfiHEWDZBNMTUBHFPVUTQZXSBQQFS AEWDSFQSPAಡΈࠐΈ ੜ ಡΈࠐΈ ࣮ߦɾੜEWDMPDL
©2021 Wantedly, Inc.ίʔυδΣωϨʔλઐ༻$POfiHdvc ͰύΠϓϥΠϯΛ࣮ߦ͢ΔͨΊʹඞཁͳdvc.yaml ͱதؒग़ྗͷύεཧΛߦ͏stageouts.py ͷੜΛߦ͏ͨΊʹඞཁʢdvc.yaml ͔Βͷมߋ༰͋͘·Ͱզʑͷ։ൃڥʹ߹ΘͤΔͨΊͷͷʣdvc.yaml ͷΛվળ͢Δ• λεΫؒͷґଘؔͷએݴ• ڞ௨ͷґଘؔͷએݴ• ύεཧͷάϧʔϐϯά
©2021 Wantedly, Inc.ίʔυδΣωϨʔλTUBHFPVUTQZதؒग़ྗઌͷ߹ੑΛ୲อ͘͢͢͠ΔʢखಈͰॏෳཧ͠ͳ͍ʣͨΊʹઐ༻ Config Ͱઃఆ֤ͨ͠εςʔδͷதؒग़ྗઌΛ Pythonίʔυͱͯࣗ͠ಈੜͨ͠ͷ֤εςʔδ͝ͱʹग़ྗઌϑΝΠϧύε͕࡞͞Ε͍ͯΔͷͰɺimport ͯ͠͏
©2021 Wantedly, Inc.݁ՌͲ͏ͳ͔ͬͨ
©2021 Wantedly, Inc.݁ՌͲ͏ͳ͔ͬͨॳͷΰʔϧࣗମୡ 🎉• ʮதؒੜΛΩϟογϡͱͯ͠׆༻͢Δ͜ͱʹΑͬͯɺ։ൃதʹ͓͚ΔσʔλύΠϓϥΠϯͷ్த͔Βͷ࠶࣮ߦʹ͔͔Δ࣌ؒͱ֤εςοϓͷ࣮ߦසΛݮ͢Δʯ• શͯஔ͖͑Δͱ͜Ζ·Ͱ͍͍ͬͯͳ͍෭࣍ޮՌ• ֤εςʔδʹ͓͚Δೖग़ྗ͕ཧ͞Εͨ
©2021 Wantedly, Inc.ݱঢ়ͷ՝
©2021 Wantedly, Inc.ݱঢ়ͷ՝• ΩϟογϡΛͪΌΜͱ༗ޮ׆༻͢ΔͨΊʹ͔ͳΓࡉ͔͘εςʔδΛΔඞཁੑ͕͋Δ• εςʔδ͕ޭͨ͠ͱ͖ʹ͔͠Ωϟογϡ͕༗ޮʹͳΒͳ͍ʢdvc.lock ʹه͞Εͳ͍ʣͷͰεςʔδͰࣦഊͨ͠߹ͦͷεςʔδΛؙ͝ͱΓ͢ඞཁ͕͋Δ• ಈతʹ࡞͞ΕΔϑΝΠϧʹରԠͰ͖ͳ͍• εςʔδྃ࣌ʹ dvc.yaml ʹॻ͔ΕͨϑΝΠϧύε͕ଘࡏ͠ͳ͍ͱΤϥʔʹͳΔ• ྫ͑։ൃڥ͔ຊ൪ڥ͔ʹΑͬͯੜ͞ΕΔ͔Ͳ͏͔ܾఆ͞ΕΔϑΝΠϧ͕ґଘؔʹؚ·Ε͍ͯΔ߹ɺ։ൃڥͰޭ͢Δ͕ຊ൪ڥͰࣦഊ͢Δͱ͍ͬͨΑ͏ͳ͜ͱ͕ى͜Γ͑Δ• ಋೖίετ͕ߴ͍• ίʔυΛ python ίϚϯυͰ࣮ߦͰ͖ΔϑΝΠϧ୯Ґʹׂ͢Δ࡞ۀ͕ඞཁʹͳΔ
©2021 Wantedly, Inc.·ͱΊWHYύΠϓϥΠϯͷ࣮ߦ͕࣌ؒͯ͘։ൃੜ࢈ੑ͕མ͍ͪͯͨWHATதؒग़ྗΛΩϟογϡͱ্ͯ͠ख͘ѻͬͯɺ։ൃதͷ࣮ߦ࣌ؒͱසΛݮͨ͠HOWDVC ͷ׆༻ͱ Wrapper πʔϧͷ࡞