事業横断組織でのMLシステム開発・運用と基盤設計

 事業横断組織でのMLシステム開発・運用と基盤設計

MACHINE LEARNING Meetup KANSAI #5
2019/6/17

E60aa4f80303f3f386898546ddb3686a?s=128

Livesense Inc.

June 17, 2019
Tweet

Transcript

  1. 4.
  2. 5.

    ૊৫ߏ੒ • ࣄۀ෦ • ΞϧόΠτࣄۀ෦ (ϚοϋόΠτ) • ΩϟϦΞࣄۀ෦ (స৬ձٞ, స৬υϥϑτ,

    ...) • ෆಈ࢈Ϣχοτ (Door ௞ି, IESHIL) • ... • ԣஅ૊৫ • ςΫϊϩδΧϧϚʔέςΟϯά෦ • σʔλϓϥοτϑΥʔϜάϧʔϓ ← MLؔ࿈ͷνʔϜ͸͜͜ʹॴଐ • σʔλϚʔέςΟϯάάϧʔϓ • ΠϯϑϥετϥΫνϟάϧʔϓ
  3. 6.

    MLνʔϜɾMLج൫νʔϜ ࣾһ • MLΤϯδχΞ: 2໊ • MLج൫ΤϯδχΞ: 2໊ • ׬શʹ෼ۀ͍ͯ͠ΔΘ͚Ͱ͸ͳ͘ɺॏͳΔ෦෼΋͋Δ

    ֶੜΞϧόΠτ • ژ౎ΦϑΟε: 4໊ • ౦ژΦϑΟε: 1໊ • ML/Web/ΠϯϑϥͳͲͷεΩϧΛ׆͔ͯ͠։ൃΛิॿ
  4. 24.

    ίϯϙʔωϯτͷ෼ׂ ֤εςοϓΛ୯ػೳίϯϙʔωϯτʹ੾Γग़͠ • ֤ίϯϙʔωϯτ͸ CLI Ͱ୯ಠ࣮ߦͰ͖Δ • ίϯϙʔωϯτؒͷೖग़ྗ͸͢΂ͯϑΝΠϧΛհ͢Δ ྫ: •

    I/Oίϯϙʔωϯτ: SQLϑΝΠϧΛೖྗ → σʔλΛCSVͱͯ͠ग़ྗ • લॲཧίϯϙʔωϯτ: ςΩετσʔλΛೖྗ → BoWϕΫτϧΛग़ྗ • Ϩίϝϯυίϯϙʔωϯτ: ධՁσʔλΛೖྗ → ਪનείΞΛग़ྗ
  5. 25.

    ίϯϙʔωϯτͷίϯςφԽ • ֤ίϯϙʔωϯτΛ୯Ұͷ Docker Πϝʔδʹ͢Δ • γεςϜ͝ͱͷࠩ෼͸΄΅ઃఆϑΝΠϧɾSQL͚ͩͰදݱ • ୯७ͳόονॲཧͳΒ docker

    run ͷஞ࣮࣍ߦ͚ͩͰॻ͚Δ • ࣮ࡍʹ͜ΕͰຊ൪Քಇ͍ͯ͠ΔγεςϜ΋͋Δ # load dataset docker run -v $(pwd):/workdir sqlkit select ratings.sql /workdir/ratings.csv docker run -v $(pwd):/workdir sqlkit select content.sql /workdir/content.csv # preprocess docker run -v $(pwd):/workdir nlpkit vectorize /workdir/content.csv /workdir/features.csv # run recommender docker run -v $(pwd):/workdir recommender predict config.yaml /workdir
  6. 26.
  7. 30.

    Google Kubernetes Engine (GKE) ͷ࠾༻ νʔϜࣗલͷίϯϐϡʔςΟϯάج൫ΛखʹೖΕΔ • ߴෛՙͳMLॲཧͷ࣮ߦத͸ΦʔτεέʔϧͰϦιʔεΛ૿ڧ • γεςϜͷߏ੒Λ༰қʹ௥ՃɾมߋͰ͖Δ

    • ྫ: ༧ଌϞσϧͷ؆қϏϡʔϫΛ Deployment ͱཱͯͯ͠Δ ෳ਺γεςϜΛ౷Ұ͞Εͨ؀ڥͰҰݩ؅ཧͰ͖Δ • WebΞϓϦ΋όονॲཧ΋୯ҰΫϥελʹಉډ • δϣϒ؅ཧ΍σϓϩΠ΋ k8s ͷΤίγεςϜ্Ͱ࣮ݱ
  8. 31.

    ิ଍: গਓ਺νʔϜͰ Kubernetes ? γεςϜͷܗଶ͕Ұ༷ɾ୯७ͳΒଞʹྑ͍બ୒ࢶ͕͋Δ • όονॲཧ͚ͩ → GCE, Fargate,

    ... • WebΞϓϦ͚ͩ → GAE, Beanstalk, ... ͔͠͠ɺࠓճ͸༷ʑͳγεςϜΛѻ͏ඞཁ͕͋ͬͨ • Ҡߦର৅ͷطଘγεςϜʹ͸όονॲཧ΋WebΞϓϦ΋ؚ·ΕΔ • ίϯςφԽ͞Εͨෳ਺ͷίϯϙʔωϯτΛ࿈ܞ͍ͤͨ͞ → ͜ΕΒΛ౷Ұతʹ؅ཧ͢Δͷʹ Kubernetes ͕ద͍ͯͨ͠
  9. 32.

    ϫʔΫϑϩʔΤϯδϯͷಋೖ • δϣϒ؅ཧͦͷ΋ͷ͸ k8s ͰҰݩԽͰ͖ͨ • ίϯϙʔωϯτΛ࿈ܞͤͯ͞ϫʔΫϑϩʔԽ͍ͨ͠ → Argo Workflow

    Λಋೖ • k8s ͰίϯςφΛ௚ྻɾฒྻɾDAG࣮ߦ͢ΔϫʔΫϑϩʔΤϯδϯ • ϦτϥΠɾΤϥʔॲཧͳͲ΋؆୯ʹ࣮ݱ • ϫʔΫϑϩʔ࣮ߦΛ Web UI ͰϞχλϦϯάͰ͖Δ લճLTͰ঺հ: Argo Workflow ʹΑΔMLδϣϒ؅ཧ - Speaker Deck
  10. 33.

    σϓϩΠϑϩʔͷࣗಈԽ • σϓϩΠͦͷ΋ͷ͸ k8s manifest Λ apply ͢Δ͚ͩ • ߋʹखؒΛলͨ͘ΊσϓϩΠΛࣗಈԽ͍ͨ͠

    → Cloud Build Ͱ GitOps Λ࣮ݱ • Manifest ϨϙδτϦͷϓϧϦΫϚʔδΛτϦΨʔͱ͢Δ • Cloud Build Ͱ kustomize build ~ kubectl apply ※ Argo CD ΋ݕ౼͕ͨ͠ɺࠓͷن໛ͳΒ Cloud Build Ͱे෼ͱ൑அ
  11. 34.
  12. 35.

    Pros • νʔϜ಺Ͱͷӡ༻ͷॊೈੑɾࣗ༝౓͕޲্ • ඞཁʹԠͯ͡ϦιʔεΛ૿ڧ • PoC ࣮૷ΛαʔϏεӨڹΛݶఆͯ͠ࢼݧӡ༻ • γεςϜ͕૿͑ͯ΋؅ཧίετΛ཈͑΍͍͢

    Cons • ಉ͡Πϯϑϥʹෳ਺γεςϜ͕ಉډ → Χεέʔυো֐ͷϦεΫ • δϣϒͷႈ౳ੑͳͲ k8s ಛ༗ͷੑ࣭ʹཹҙ͢Δඞཁ
  13. 37.
  14. 38.
  15. 39.

    Before • ਨ௚ߏ଄ = ݽཱͨ͠γεςϜΛݸผʹ։ൃɾӡ༻ • γεςϜͷ਺ʹൺྫͯ͠޻਺ɾਓ਺͕ඞཁʹͳΓ͕ͪ After • ਫฏߏ଄

    = ػೳίϯϙʔωϯτΛ࠶ར༻͠ɺΠϯϑϥϨΠϠΛڞ௨Խ • γεςϜͷ਺͕૿͑ͯ΋؅ཧ΍໾ׂ෼୲͕͠΍͍͢
  16. 40.