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

機械学習チームにおけるソフトウェアエンジニア〜役割、キャリア /devsum-2018-summer

Takahiko Ito
July 27, 2018
11k

機械学習チームにおけるソフトウェアエンジニア〜役割、キャリア /devsum-2018-summer

Takahiko Ito

July 27, 2018
Tweet

Transcript

  1. ४උɿػցֶशϓϩδΣΫτͷಛ௃ • ௨ৗͷιϑτ΢ΣΞ։ൃͱҧ͍ • ίʔυ͚ͩͰ׬݁͠ͳ͍ • ίʔυΛಡΜͰ΋ৼΔ෣͍͕෼͔Βͳ͍ʢϞσϧʹৼΔ෣͍͕Ӆṭ͞Ε͍ͯΔʣ • ೖྗσʔλʹґଘ͢Δʢ͞Βʹೖྗͷ܏޲͕มԽ͢Δ͜ͱ͕͋Δʣ •

    ஌ݟΛڞ༗ʢ࣮૷Λཧղ͢ΔϝϯόΛෳ਺ἧ͑Δʣͯ҆͠શੑΛ֬อ͢Δͷ͕೉͍͠ • ಛʹΞϧΰϦζϜࣗମ͕೉͍͠৔߹ ࣮͸έΞ͠ͳ͚Ε͹ͳΒͳ͍෦෼͕ଟ͍ϓϩδΣΫτͱ͍͑Δ 6
  2. ࠷ۙͷྲྀΕ • ػցֶशͷಋೖɺ؅ཧͷ೉͠͞ΛΤ ϯδχΞϦϯάͰରॲ • σʔλαΠΤϯςΟετΛαϙʔτ ͢ΔνʔϜฤ੒ • MLΤϯδχΞɺσʔλΤϯδχΞ etc…

    • AIɺػցֶश෼໺Ͱ׆༂͢Διϑτ ΢ΣΞΤϯδχΞ͕૿Ճ 7 • Ͱ͸ɺػցֶशνʔϜͰιϑτ΢Σ ΞΤϯδχΞ͸Ͳ͏͍ͬͨߩݙΛ ͢Δ΂͖ͳͷ͔ʁ • ϓϩδΣΫτͷϥΠϑαΠΫϧʹ ஫໨͢Δͱ໾ׂ͕ݟ͑ͯ͘Δ
  3. ฐࣾࣄྫɿܭࢉػϦιʔε؅ཧ • ɹɹ @ayemos_y ࢯʹΑΔܭࢉػϦιʔε ͷ؅ཧ༻Slack΢ΣΞ • Slack্Ͱܭࢉثͷ֬อΛ͓ئ͍͢ΔͱEC2 ΠϯελϯεΛ࡞ͬͯ͘ΕΔɻ •

    ܭࢉػ͕࢖ΘΕͳ͘ͳΔͱࣗಈͰམͱͯ͠ ͘ΕΔʢ͓ۚͷઅ໿ʣ • ৄ͘͠͸ɿhttps://techlife.cookpad.com/ entry/2017/10/26/174345 23
  4. εΫϦϓτԽ • ࣮ݧεςʔδͰ࡞੒ͨ͠ Jupyter Notebook ʹهड़͞Ε͍ͯΔॲཧ Λ Python εΫϦϓτʹҠߦ •

    ࡞ۀɿ • ࣮ݧϑϩʔͷߏ଄Խɿ΂ͨॻ͖ͷॲཧ͔Βؔ਺ɺΫϥεͷநग़ • ͋Θͤͯؤ݈ੑͷ֬อɿϦϑΝΫλϦϯάɺςετ௥Ճ 27
  5. ϦϑΝΫλϦϯά • ϓϩάϥϜͷ֎෦͔Βݟͨಈ࡞ Λม͑ͣʹιʔείʔυͷ಺෦ ߏ଄Λ੔ཧ͢ΔʢWikipedia Α Γʣ • ॴײɿGitHub ΍

    Qiita Ͱެ։͞ Ε͍ͯΔػցֶशϓϩδΣΫτ ͸੔ཧ͞Ε͍ͯΔ΋ͷ͕গͳ͍ ʢଞ෼໺ͷίʔυͱൺֱʣɻ 28
  6. ྫɿDocker ίϚϯυ • Docker Πϝʔδͷ࡞੒ • docker build -t ml-image

    -f ./docker/Dockerfile . • Dockerίϯςφͷ࡞੒ • docker run -it -v `pwd`:/work -p 8888:8888 --name ml-image ml- container • ίϯςφͷ࡟আɺ࠶ੜ੒͢Δͨͼʹຖճಉ͡ίϚϯυΛଧͪࠐΉ… 40
  7. ฐࣾࣄྫɿCookiecutter Docker Science • Docker؀ڥͰͷ࣮ݧʙσϓϩΠ·ͰΛαϙʔτ͢ΔCookiecutterςϯ ϓϨʔτΛ࡞੒ • ΦʔϓϯιʔεϓϩδΣΫτʢ࢖ͬͯΈͯ΋Β͑Δͱخ͍͠Ͱ͢ʣ • URL:

    https://docker-science.github.io/ • ιʔεɿhttps://github.com/docker-science/cookiecutter-docker-science • Cookiecutter: ϓϩδΣΫτͷςϯϓϨʔτੜ੒πʔϧ 41
  8. ػೳɿCookicutter Docker Science • ΤϯδχΞϦϯάೳྗͷߴ͘ͳ͍ϝϯόͰ΋DockerΛѻ͍΍͘͢ • DockerͷίϚϯυΛ make λʔήοτͰӅṭ •

    Πϝʔδ໊ɺϙʔτɺϑΝΠϧϚ΢ϯτઃఆɺίϯςφ࡞Γ௚͠ etc … • ࣮ݧ͔Β੔ཧɺσϓϩΠ·ͰΛҙࣝͨ͠σΟϨΫτϦߏ੒Λग़ྗ • σΟϨΫτϦߏ੒ͷڞ௨ԽʹΑΓϓϩδΣΫτͷݟ௨͠ • Cookiecutter Data Science ͷߏ੒Λࢀߟʹͨ͠ 42
  9. ϑΝΠϧɺσΟϨΫτϦߏ੒ͷ౷Ұ 43 make init Ͱ S3͔Βσʔ λΛμ΢ϯϩʔυ ֶशεΫϦϓτ͕ग़ྗ͢Δ ϞσϧΛอ࣋ ࣮ݧ༻ͷϊʔτϒο

    ΫΛอ࣋ ίʔυ੔ཧ࣌ʹ࡞ ΒΕΔϝιουɺΫϥε Λอ࣋ ϓϩδΣΫτͷϫʔ ΫϑϩʔΛ௥ه
  10. Cookiecutter Docker Science ͷ࢖͍ํʢϓ ϩδΣΫτੜ੒ʣ $cookiecutter [email protected]:docker-science/cookiecutter-docker-science.git project_name [project_name]: image-classification

    project_slug [image_classification]: jupyter_host_port [8888]: description [Please Input a short description]: Classify images into several categories data_source [Please Input data source in S3]: s3://research-data/food-images 44
  11. σϞ: Cookiecutter Docker Science • ϓϩδΣΫτͷੜ੒ • https://asciinema.org/a/ 6XV9dNixtzfUwWdoqLj7HG7A2 •

    Docker image / container ίϯςφ࡞੒ • https://asciinema.org/a/ 06CcXPubAj3RSiMSTy3CZDrfG • Jupyter Notebook Λ্ཱͪ͛Δ 45
  12. ฐࣾࣄྫɿσϓϩΠͷޮ཰Խ • αʔό؅ཧ • ECSͷར༻ʢKubernates΋։࢝ʣ • Πϯϑϥ෦ʹΑͬͯ੔උ͞Ε͍ͯΔ • ػցֶशνʔϜࣗ਎ͰϓϩμΫγϣϯ؀ڥʹ αʔόΛߏஙͰ͖Δ؀ڥ͕ఏڙ͞Ε͍ͯΔ

    • ඞཁͳ࡞ۀɿઃఆϑΝΠϧΛϨϙδτϦʹ௥ Ճ͢Δ͚ͩʢهड़಺༰ɿೝূɺαʔόͷੑೳ etcʣ 48 • chie8842 ࢯʹΑͬͯػցֶशϓϩδΣ ΫτͷઃఆΛڞ௨Խ͕ਐΜͰ͍Δ • খ͞ͳϓϩδΣΫτͰ͋Ε͹ڞ௨ͷઃఆΛ ࢖͏ • ೝূɺதؒσʔλஔ͖৔ etc • σϓϩΠϑϩʔͷ؆ૉԽ • هड़͕ඞཁͳઃఆ߲໨Λѹॖ
  13. ͨͩ͠ɺͲͪΒͷ৔߹Ͱ΋ Ͳͷϝϯό΋࠷௿ݶ͍࣋ͬͯΔ΂͖ٕज़ελοΫ͸͋Δ • Git ͷͪΐͬͱৄ͍͠࢖͍ํ • rebaseɺstashɺίϛοτ·ͱΊʢsquashʣɺbisect etc… • Ծ૝ԽɿDocker

    • ίʔυͷ඼࣭΁ͷέΞ: ςετۦಈ։ൃ • Issue؅ཧɿJiraɺRedmine ϝϯόશһ͕Ͱ͖ΔͱϓϩδΣΫτΛ؅ཧ͠΍͍͢ 55
  14. Πϯϑϥʹؔ͢Δٕज़ 63 ػցֶश • ػցֶशͷαʔϏεಋೖΛޮ཰Խ͢Δͷʹར༻Ͱ ͖Δଟ༷ͳΠϯϑϥٕज़͕ଘࡏ͢Δ • ϫʔΫϑϩʔ؅ཧɿAirflow • ߏ੒؅ཧɿAnsibleɺChef

    • αʔό؅ཧɿDockerɺKubernatesɺECS • Πϯϑϥ͕ίʔυԽ͞Εͨ؀ڥͩͱɺػցֶशΤ ϯδχΞࣗ਎Ͱ͜ͷ͋ͨΓͷ࡞ۀ͕Ͱ͖Δ
  15. αʔϏε։ൃͰར༻͢Δٕज़ 64 • σʔλϕʔεʹػցֶशͷΞϊςʔγϣϯ݁ՌΛอ࣋ͨ͠ޙɺ αʔϏεͰར༻͢ΔͨΊͷΠϯςάϨʔγϣϯ࡞ۀ͕ඞཁ • MVCϑϨʔϜϫʔΫʢRailsͳͲʣ • ·ͣ͸Ϟσϧɺίϯτϩʔϥ࡞੒Λࣗ෼Ͱ࡞Δ •

    ϑϩϯτͷௐ੔ɿJavaScriptɺCSS • ਐԽͷ଎౓͕ૣ͘ΩϟονΞοϓ͕େม͕ͩɺशಘ͢Δͱ αʔϏεʹಋೖ͠΍͘͢ͳΔ • ྫɿES̒ɺTypeScriptɺ ReactɺVueɺwebpack etc … ػցֶश
  16. ෼ੳج൫Ͱར༻͢Δٕज़ 65 • ॳาɿػցֶशͷσʔλΛ෼ੳج൫͔Βऔಘ͢ΔʢSQLʣ • தڃɿଟ༷ͳϏοΫσʔλϑϨʔϜϫʔΫΛ࢖͏ • PythonɺSQL͚ͩͰͳ͘ɺ෼ࢄϑϨʔϜϫʔΫ ʢHadoopɺSparkʣ্ͷίʔυ΋ॻ͘ܦݧΛੵΉ •

    ཧղΛਂΊΔͨΊʹझຯͰΞϧΰϦζϜΛ࣮૷ͯ͠ެ։ • ࣗ෼͕ੲ࡞ͬͨ΋ͷʢLSH ͷұ࣮૷ʣɿ https:// github.com/takahi-i/likelike • ཧ૝ɿ෼ੳج൫ͷվળʹ΋ߩݙ ػցֶश