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

料理きろくと機械学習

2687225d04b70904dca512a5a3c5b528?s=47 uiureo
October 03, 2017

 料理きろくと機械学習

【京都開催 feat.はてな】Cookpad Tech Kitchen #11 https://cookpad.connpass.com/event/64837/
【福岡開催 feat.ペパボ】Cookpad Tech Kitchen #12 https://cookpad.connpass.com/event/64844/

で発表したものです

2687225d04b70904dca512a5a3c5b528?s=128

uiureo

October 03, 2017
Tweet

Transcript

  1. ྉཧ͖Ζ͘ͱػցֶश ਿຊ෩ే 2017/09/28, 29

  2. ਿຊ෩ే • Kazato Sugimoto • @uiureo • αʔϏε։ൃ෦ΤϯδχΞ

  3. ΫοΫύουͰͷ࢓ࣄ • ػցֶशΛ׆༻ͨ͠αʔϏε։ൃ • ྉཧ͖Ζ͘, Ϩίϝϯσʔγϣϯ • ػցֶशϞσϧҎ֎ͷ։ൃΛओʹ୲౰ • Ruby,

    Python, Redshift, Android
  4. ࿩͢͜ͱ • ػցֶशΛαʔϏεͰ׆༻͢ΔͨΊʹͲ͏͢Δ͔ • αʔϏε։ൃΛࢧ͑Δٕज़ج൫ͷ঺հ • ֶश → ਪଌ •

    ֶशϑΣʔζͰͳ͘ɺਪଌϑΣʔζΛத৺ʹ
  5. ๻͕ػցֶशʹؔΘΔཧ༝

  6. ศརͳ΋ͷΛ࡞Γ͍ͨ • લ৬Ͱ͸UI/UXΤϯδχΞ • Gyazo / Gyazo GIF • ϧʔϧϕʔεͷΞϓϩʔνʹݶքΛײ͡Δ

    • Google PhotosΛݟͯিܸ
  7. ศར͞ͷ૿Ճ෼ (ࠓޙ3~5೥) ػցֶश > ώϡʔϦεςΟΫε

  8. UI͸ಁ໌Խ͍ͯ͘͠ • ࣗಈԽʹΑͬͯೖྗUIͷଘࡏ͕رബʹͳ͍ͬͯ͘ • ྫ: Ϩίϝϯσʔγϣϯ, ࣗಈӡస netflix.com ϗʔϜը໘ ࣗಈӡసं

  9. ྉཧ͖Ζ͘ • ྉཧͷࣸਅΛࣗಈͰه࿥ • ྉཧΛָ͘͠ৼΓฦΔ • ྉཧࣸਅྦྷܭ 1000ສຕ௒
 (2017/09/26 ࣌఺)

  10. ྉཧ͖Ζ͘Ͱ͸ ػցֶशΛ ੵۃతʹ׆༻͍ͯ͠·͢

  11. ྉཧ൑ผ ࣸਅ͕ྉཧ͔Ͳ͏͔Λ൑ఆ͢Δ ྉཧ͖Ζ͘ʹ͓͚Δྉཧ/ඇྉཧ൑ผϞσϧͷৄࡉ
 http://techlife.cookpad.com/entry/2017/09/14/161756

  12. ࡞ͬͨϨγϐ൑ఆ Ӿཡͨ͠ϨγϐΛ࣮ࡍʹௐཧ͔ͨ͠ਪଌ͢Δ

  13. ࡞ͬͨϨγϐΛࣗಈͰه࿥

  14. Ϩγϐબ୒ը໘ͰͷαδΣετ

  15. ັྗ౓ͷਪఆ ྉཧը૾ͷັྗ౓ (1~5఺) Λਪఆ͢Δ ※ ਿຊ࡞ ໺ࡊᖱΊ

  16. ັྗ౓ͷਪఆ: push௨஌Ͱͷ׆༻

  17. ྉཧࣸਅͷϝχϡʔ෼ྨ ྉཧը૾Λ50ΧςΰϦʹ෼ྨ ʮύελʯ ʮΦ Ϝ ϥΠεʯ

  18. ϝχϡʔΛ࣠ʹৼΓฦΔػೳ (։ൃத)

  19. ػցֶश → ݱ࣮ੈք Ͱͷ՝୊ • ܭࢉίετͷߴ͞ • ಛʹσΟʔϓϥʔχϯά • ܭࢉ؀ڥͷࠩ

    • Ruby, CPU <-> Python, GPU • ͲͷΑ͏ʹσϓϩΠ͢Δ͔ʁ
  20. ػցֶशϞσϧͷσϓϩΠ • ࠓճ͸ϦΞϧλΠϜੑ͕ඞཁͳ͍৔߹ͷ࿩Λ͠·͢ • ྉཧ൑ఆͰͷΞʔΩςΫνϟʹ͍ͭͯ͸: ΫοΫύουͷػցֶशΛࢧ͑Δج൫ͷͭ͘Γ͔ͨ https://speakerdeck.com/ayemos/machine-learning-ops-at-cookpad-1

  21. ػցֶशόονͷΞʔΩςΫνϟ S3 S3 ECS MySQL Kuroko2 Redshift Rails AWSΛྲྀΕΔσʔλͷؾ࣋ͪʹͳΓ·͠ΐ͏

  22. DB ߦಈϩά ػցֶशόονͷΞʔΩςΫνϟ AWSΛྲྀΕΔσʔλͷؾ࣋ͪʹͳΓ·͠ΐ͏ S3 ECS Redshift

  23. ػցֶशόονͷΞʔΩςΫνϟ S3 S3 ECS MySQL Kuroko2 Redshift Rails AWSΛྲྀΕΔσʔλͷؾ࣋ͪʹͳΓ·͠ΐ͏

  24. S3 MySQL Rails ػցֶशόονͷΞʔΩςΫνϟ AWSΛྲྀΕΔσʔλͷؾ࣋ͪʹͳΓ·͠ΐ͏

  25. Redshift • σʔλ෼ੳج൫ • ࣾ಺ͷ͢΂ͯͷϩά΍σʔλ͕ू໿ • SQLͰૉૣ͘σʔλ෼ੳͰ͖Δ

  26. Kuroko2 • δϣϒ؅ཧγεςϜ • δϣϒͷϑϩʔΛ੍ޚ͍ͯ͠Δ • Web UIܦ༝ͰδϣϒΛ࣮ߦ͢Δ ΫοΫύουͷδϣϒ؅ཧγεςϜ kuroko2

    ͷ঺հ http://techlife.cookpad.com/entry/2015/12/07/195732
  27. ECS • AWSͷίϯςφ࣮ߦ؀ڥ • hako: DockerͷσϓϩΠπʔϧ • ymlͰఆٛΛॻ͚Δ • ྫ:

    DockerfileͰఆٛͨ͠Python / Tensorflowͷ࣮ߦ؀ڥ Λg2.2xlargeͷΫϥελʹσϓϩΠ ECS Λར༻ͨ͠ΦϑϥΠϯδϣϒͷ࣮ߦ؀ڥ http://techlife.cookpad.com/entry/2016/09/09/235007
  28. hakoͰܭࢉ؀ڥΛఆٛ

  29. ػցֶशόονͷΞʔΩςΫνϟ S3 S3 ECS MySQL Kuroko2 Redshift Rails AWSΛྲྀΕΔσʔλͷؾ࣋ͪʹͳΓ·͠ΐ͏

  30. Kuroko2Ͱͷσʔλϑϩʔ੍ޚ

  31. Kuroko2Ͱͷδϣϒ࣮ߦ

  32. Kuroko2Ͱͷδϣϒ࣮ߦ ఆظ࣮ߦ

  33. Kuroko2Ͱͷδϣϒ࣮ߦ ࣮ߦ݁Ռ ఆظ࣮ߦ

  34. ࡞ͬͨϨγϐ൑ఆͷσϓϩΠ • RedshiftͰಛ௃நग़ • ಛ௃: Ӿཡ࣌ؒ, ϒοΫϚʔΫ͔ͨ͠ͳͲ • xgboostͰͷϞσϧͰʮ࡞ͬͨʯʮ࡞ͬͯͳ͍ʯΛ൑ఆ

  35. ࡞ͬͨϨγϐ൑ఆͷσϓϩΠ RedshiftͰϩά͔Βಛ௃நग़ time user_id recipe_id 17:00 1 123 18:00 1

    234 17:01 2 345 17:02 2 456 ϨγϐӾཡϩά (ΫιͰ͔͍) user_id recipe_id ྦྷܭӾཡ ࣌ؒ 1 123 10෼ 1 234 1෼ 2 345 5ඵ 2 456 20෼ ಛ௃
  36. S3 S3 ECS Redshift ࡞ͬͨ ಛ௃நग़ Ϟσϧ൑ఆ xgboost ࡞ͬͯͳ͍ ࡞ͬͨ

    ࡞ͬͯͳ͍ 10෼ 1෼ 5ඵ 20෼ ࡞ͬͨϨγϐ൑ఆͷσϓϩΠ
  37. ػցֶशόονͰ͸ڞ௨͢Δॲཧ͕ଟ͍ S3 S3 ECS unload python import python python python

    tsvΛdownload → ܭࢉ → tsvΛupload
  38. ml-batch • ػցֶशόονͷڞ௨ॲཧΛ؆୯Խ͢ΔpythonϥΠϒϥ Ϧ • ฒྻԽΛ͍͍ײ͡ʹ • ϩΪϯάΛ͍͍ײ͡ʹ • ࣮ߦ࣌ؒͷ౷ܭ৘ใͷग़ྗͳͲ

  39. ml-batch

  40. ϝχϡʔ෼ྨͰͷ՝୊ • ܭࢉίετ͕ߴ͍ • ը૾ 1݅ 200ms (GPUͰͷ࠷దԽޙ) • ϞσϧΛߋ৽͢Δͨͼʹɺ໿1000ສ݅ʹλά෇͚

    • Πϯελϯε1୆Ͱ ໿20೔ • ੒௕͠ଓ͚ΔͷͰɺը૾਺͸૿͑Δ
  41. ϝχϡʔ෼ྨͰͷ޻෉ • σʔλΛฒྻʹѻ͑Δ • 40୆Ͱ࣮ߦ͢Ε͹ ໿0.5೔ Ͱ׬ྃ͢Δ

  42. ฒྻ࣮ߦʹΑΔߴ଎Խ S3 S3 ͨ͘͞Μ૿΍͢ unload python import python python python

  43. Kuroko2Ͱͷฒྻ࣮ߦ 40ίฒྻʹhakoͰδϣϒΛىಈ

  44. ฒྻ࣮ߦͷ࢓૊Έ • Redshift͔Βunload͢Δͱ෼ׂͯ͠S3ʹೖྗΛஔ͘ • Kuroko2 + hako ͸NݸδϣϒΛσϓϩΠ • ฒྻ౓ͱԿ൪໨͔ͷ؀ڥม਺Ληοτ͢Δ

    • ml-batch͸؀ڥม਺Λݟͯ୲౰෼ͷೖྗΛॲཧ
  45. ·ͱΊ • ྉཧ͖Ζ͘Ͱ͸ػցֶशΛੵۃతʹ׆༻͍ͯ͠Δ • ΫοΫύουͰͷٕज़ج൫Λϑϧ׆༻࣮ͯ͠ݱ͍ͯ͠Δ