Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rustで作る機械学習を用いた画像クロッピングシステム
Search
johshisha
December 19, 2019
2
2.6k
Rustで作る機械学習を用いた画像クロッピングシステム
ML@Loft #9. Deep Learning フレームワークと推論
https://ml-loft.connpass.com/event/157785/
johshisha
December 19, 2019
Tweet
Share
More Decks by johshisha
See All by johshisha
Cookpad Summer Internship 2022 15-day Tech Course ~サーバーサイド編~
johshisha
0
4k
レシピの画像検索
johshisha
1
1k
機械学習を用いた見栄えのいい料理画像抽出をサービスに活かすための取り組み
johshisha
0
4.3k
サービスに寄り添った研究開発部にするための取り組み
johshisha
0
540
Featured
See All Featured
Docker and Python
trallard
41
3.1k
How GitHub (no longer) Works
holman
311
140k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Code Review Best Practice
trishagee
65
17k
Why Our Code Smells
bkeepers
PRO
335
57k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Transcript
3VTUͰ࡞Δ ػցֶशΛ༻͍ͨ ը૾ΫϩοϐϯάγεςϜ 1 .-!-PGU %FFQ-FBSOJOHϑϨʔϜϫʔΫͱਪ ࡾᑍஐ࢙
ࡾᑍஐ࢙ @johshisha wΫοΫύουגࣜձࣾ w৽ଔೖࣾ wݚڀ։ൃ෦ wͬͯΔ͜ͱ wϨγϐͷը૾ݕࡧ wࠂ৴࠷దԽ wը૾ͷݟӫ͑ਪఆ 2
3 ͱࢥ͍·͔͢ʁ ඒຯͦ͠͏ ࡞Γ͍ͨ Ͳ͕ͬͪ ྆ํࡾᑍ͕ࡱӨ ᶃ ᶄ
4 ͱࢥ͍·͔͢ʁ ඒຯͦ͠͏ ࡞Γ͍ͨ Ͳ͕ͬͪ ྆ํࡾᑍ͕ࡱӨ ᶃ ᶄ Ϋϩοϐϯά ඒຯͦ͠͏ɾ࡞Γ͍ͨʹ
༩͑ΔӨڹ͕େ͖͍
ࠓͷ 5 ը૾ͷΫϩοϐϯάΛ ػցֶशΛ͍͍ͬͯײ͡ʹ͢Δ γεςϜΛ࡞ͬͨ
ࠓͷ 6 ը૾ͷΫϩοϐϯάΛ ػցֶशΛ͍͍ͬͯײ͡ʹ͢Δ γεςϜΛ࡞ͬͨ ͍͍ײ͡ʹ͢ΔͷΊͪΌͪ͘Όେม
7 εϧʔϓοτ SQT ڐ༰ϨΠςϯγʔ NTSFR ը૾Λ৴͢Δͷ͍ͨΜ αΠτʹͨ͘͞Μͷը૾͕͋Δ ͨ͘͞ΜͷϢʔβ͕ར༻͍ͯ͠Δ ϨΠςϯγʔɾߴεϧʔϓοτੑ͕ඞਢ ػցֶशΛ༻͍ͨγεςϜͰ
ϨΠςϯγʔɾߴεϧʔϓοτΛ࣮ݱ͢ΔͨΊͷ γεςϜઃܭઓུʹ͍ͭͯ͠·͢
എܠ·ͱΊ • ը૾৴γεςϜ͢Ͱʹ͋Δ͕վળ͋Γ • Ϩγϐը૾ͷ༰ʹؔΘΒͣಉ͡Α͏ʹΫϩοϐϯά͍ͯ͠Δ • ը૾αʔϏεར༻ऀ༩͑Δҹ͕େ͖͍ͨΊԿͱ͔͍ͨ͠ • ػցֶशΛͬͯ࠷దͳը૾ΫϩοϐϯάΛ࣮ݱ͍ͨ͠ •
ྉཧͷॴΛݕग़ͯ͠ΫϩοϐϯάΛߦ͑ɼΑΓΑ͍ը૾ΛఏڙͰ͖Δ • ՝: ը૾৴γεςϜϨΠςϯγʔɾߴεϧʔϓοτੑ͕ඞਢ • ࠷େ 600 req / secɼͯ͘(95ύʔηϯλΠϧͰ) 200 ms / req ͘Β͍ 8 ˞QSPEVDUJPOʹಋೖؒʹ߹͍·ͤΜͰͨ͠ ಋೖͯ͠ύϑΥʔϚϯεͷ͔ͨͬͨ͠ͷͰ͕ؒ͢ʹ߹͍·ͤΜͰͨ͠ γεςϜઃܭઓུΛॏతʹ͠·͢
γεςϜઃܭ͢Δલʹௐͨࣈ 9 ը૾ೖྗˠΫϩοϐϯάྖҬग़ྗɿNT QZUIPO खݩͷ.#1Ͱ 4͔Βը૾Λऔͬͯ͘ΔɿNTʢ&$্Ͱʣ ΫϩοϐϯάྖҬͷਪɿNT ݁ߏॏ͍ͷͰී௨ʹॲཧͯͨ͠Βؒʹ߹Θͳ͍
10 όονͰܭࢉ͓͚͍͍ͯ͠ͷͰʁ
৽ػೳͷϓϩτλΠϐϯά 11 ͪΐͬͱࢼ͍ͨ͠ͱ͖ʹରԠͰ͖ͳ͍ ৽6*ࢼͨ͢ͼʹόονΒͤΔɽɽʁ
12 ࢼߦࡨޡʹରԠͰ͖ͳ͍͚Ͳ ຊ൪Ͱ͏αΠζࣄલʹΕΔͷͰʁ
ࣄલܭࢉ͢ΔαΠζͷཧ 13 YͷϨγϐը૾Λ ͍͍ͨͰ͢ Yͷͭ͘ΕΆը૾Λ ͍͍ͨͰ͢ Yͷࣄલܭࢉͬͯ ͏ऴΘͬͯΔʁ Yͷࣄલܭࢉґཔ Εͯͨʂʂʂ
Εͳ͍Α͏ʹ αʔϏεͷ͍ͬͯΔαΠζΈͯ ࣗಈͰґཔ͛ΔΈ࡞Γ·ͨ͠ Ϧιʔε͝ͱʹҟͳΔαΠζ ܭࢉऴ͍ྃͯ͠Δ͔ͷ֬ೝ ෳࡶʹͳΔपลαʔϏε
ࣄલܭࢉ͢ΔαΠζͷཧ 14 YͷϨγϐը૾Λ ͍͍ͨͰ͢ Yͷͭ͘ΕΆը૾Λ ͍͍ͨͰ͢ Yͷࣄલܭࢉͬͯ ͏ऴΘͬͯΔʁ Yͷࣄલܭࢉґཔ Εͯͨʂʂʂ
Εͳ͍Α͏ʹ αʔϏεͷ͍ͬͯΔαΠζΈͯ ࣗಈͰґཔ͛ΔΈ࡞Γ·ͨ͠ Ϧιʔε͝ͱʹҟͳΔαΠζ ܭࢉऴ͍ྃͯ͠Δ͔ͷ֬ೝ ෳࡶʹͳΔपลαʔϏε αΠζͷཧߟ͑Δ͜ͱ͕ଟ͍ Γͨ͘ͳ͍
• ը૾৴γεςϜ͢Ͱʹ͋Δ͕վળ͋Γ • Ϩγϐը૾ͷ༰ʹؔΘΒͣಉ͡Α͏ʹΫϩοϐϯά͍ͯ͠Δ • ը૾αʔϏεར༻ऀ༩͑Δҹ͕େ͖͍ͨΊԿͱ͔͍ͨ͠ • ػցֶशΛͬͯ࠷దͳը૾ΫϩοϐϯάΛ࣮ݱ͍ͨ͠ • ྉཧͷॴΛݕग़ͯ͠ΫϩοϐϯάΛߦ͑ɼΑΓΑ͍ը૾ΛఏڙͰ͖Δ
• ՝: ը૾৴γεςϜϨΠςϯγʔɾߴεϧʔϓοτੑ͕ඞਢ • ࠷େ 600 req / secɼͯ͘(95ύʔηϯλΠϧͰ) 200 ms / req ͘Β͍ • ཧ: αΠζͷཧΛͨ͘͠ͳ͍ 15 എܠ·ͱΊʢ࠶ʣ Ͳ͏࣮ݱ͢Δ͔
ϨΠςϯγʔɾߴεϧʔϓοτͳ ΞϓϦέʔγϣϯΛߏங͢Δ 16 1ZUIPOΛબ͢Δ͔ʁ ػցֶशͷ͜ͱҰ୴ஔ͍͓͍ͯͯ
ϨΠςϯγʔɾߴεϧʔϓοτΛ 1ZUIPOͰ࣮ݱ͢Δͷ͍͠ w ͍ʢ͜ͱ͕ଟ͍ʣ w ύϑΥʔϚϯεͷνϡʔχϯά͕େม w ϝϞϦίϐʔ͕Ͳ͜Ͱى͍ͬͯ͜Δͷ͔Ѳͮ͠Β͍ w ϚϧνεϨουॲཧ͕͍
w (*- άϩʔόϧΠϯλϓϦλϩοΫ w ؆୯ʹݴ͏ͱɼҰͭͷεϨουͰ͔͠$16ॲཧ͕࣮ߦ͞Εͳ͍ 17
3VTU 18 ҆શ ͍ ฒߦੑ Τί γεςϜ -JGFUJNF 0XOFSTIJQʹΑͬͯϝϞϦΛཧ $$
ʹඖఢ͢Δ͞ ϚϧνεϨουΛߟྀͨ͠ݴޠઃܭ ศརͳΫϨʔτ ϥΠϒϥϦ ͕ଟఏڙ͞Ε͍ͯΔ QZUIPO΄ͲͰͳ͍͕
ػցֶशΛ༻͍ͨ ϨΠςϯγʔɾߴεϧʔϓοτͳ ΞϓϦέʔγϣϯΛߏங͢Δ 19 3VTUΛબ͢Δ͔ʁ
3VTU 20 ҆શ ͍ ฒߦੑ Τί γεςϜ -JGFUJNF 0XOFSTIJQʹΑͬͯϝϞϦΛཧ $$
ʹඖఢ͢Δ͞ ϚϧνεϨουΛߟྀͨ͠ݴޠઃܭ ศརͳΫϨʔτ ϥΠϒϥϦ ͕ଟఏڙ͞Ε͍ͯΔ QZUIPO΄ͲͰͳ͍͕ Τί γεςϜ ศརͳΫϨʔτ ϥΠϒϥϦ ͕ଟఏڙ͞Ε͍ͯΔ
21
3VTUͰਪ w χϡʔϥϧωοτϫʔΫ෦ͷҠߦ؆୯ w TBWFE@NPEFMΛ͏ͱωοτϫʔΫͷఆٛҰߦ w લॲཧɾޙॲཧॻ͖͢ඞཁ͕͋Δ w ը૾ܥͷλεΫͩͱ͜ͷ෦؆୯ʢͳ͜ͱ͕ଟ͍ʣ w
ॲཧ w ׂݮʢQZUIPONT SVTUNT˞લॲཧɾޙॲཧؚΉʣ 22
Ϟσϧͷ֓ཁ 23 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ ΟϯυΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦Λ୳͠ग़͢
Ϟσϧͷ֓ཁ 24 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ ΟϯυΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦Λ୳͠ग़͢ 1ZUIPOϥΠϒϥϦ 1*-
OVNQZ LFSBT OVNQZ
Ϟσϧͷ֓ཁ 25 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ ΟϯυΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦Λ୳͠ग़͢ 3VTUΫϨʔτ JNBHF
OEBSSBZ UFOTPSqPX OEBSSBZ
26 ਪʹݶఆͨ͠߹ 3VTUͰػցֶशΛ༻͍ͨγεςϜΛ ؆୯ʹ࣮ݱͰ͖Δ
27 3VTUʹ͚ͨͩ͠Ͱ ύϑΥʔϚϯεཁ݅ΛຬͨͤΔΘ͚Ͱͳ͍ ͱ͍͑
28 ॏ͍ͨॲཧΩϟογϡ͢Δ ఘΊΔ෦ఘΊΔ γεςϜઃܭํ ͳʹΛ͍·͞ΒͨΓલͷ͜ͱΛʁ
29 ॏ͍ͨॲཧΩϟογϡ͢Δ ఘΊΔ෦ఘΊΔ γεςϜઃܭํ ػցֶश͕བྷΉγεςϜͰී௨ʹઃܭ͢Ε͍͍ ͳʹΛ͍·͞ΒͨΓલͷ͜ͱΛʁ
Ϋϩοϐϯά݁ՌͷΩϟογϡ 30 ಉ͡αΠζͷϦΫΤετ݁Ռ͕ಉ͡ͳͷͰ͍ճ͢ ܭࢉ͕ඞཁͳ͍ͷͰߴ
31 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ ΟϯυΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦Λ୳͠ग़͢ ॏ͍ͨॲཧͰ͖Δ͚ͩΩϟογϡ͍ͨ͠ Ϟσϧ֓ཁ ਪͷΩϟογϡ
32 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ ΟϯυΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦Λ୳͠ग़͢ ਪͷΩϟογϡ Ϟσϧ֓ཁ Ϟσϧͷڞ௨෦ΩϟογϡͰ͖Δ
ώʔτϚοϓ͕͋Ε ΫϩοϐϯάྖҬͷܭࢉ͕Մೳ
ఘΊΔஅ w Ͱ͖Δ͚ͩࣸਅͷݟӫ͑ΛΑ͍ͨ͘͠ w ը૾৴͕͘ͳΒͳ͍͜ͱ͕ॏཁ w ը૾৴γεςϜ͢Ͱʹ͋Δ 33 ॲཧ͕٧·͍ͬͯΕ ఘΊͯطଘͷΈͰ৴͢ΕΑ͍
ώʔτϚοϓΩϟογϡͰ͖͍ͯͳ͍߹ ॲཧ͕٧·Δ ʢॳճಋೖ࣌ɾ৽͍͠Ϧιʔε ͭ͘ΕΆʹରԠ ͕૿͑ͨ߹ʣ
ը૾৴ͷํ๏ 34 طଘ৴αʔό ΫϩοϐϯάγεςϜ ϦΫΤετ ॴࢦఆͳ͠ ϦΫΤετ ແ ཧ طଘ৴αʔό
ΫϩοϐϯάγεςϜ ϦΫΤετ Ϋϩοϓॴࢦఆͯ͠ ϦΫΤετ ͜ͷॴͰ Ϋϩοϓͯ͠΄͍͠ ը૾Λฦ͢ ௨ৗ࣌ ఘΊΔ࣌ ૣΊʹఘΊΔஅΛ͢Δ͜ͱ͕େࣄ
࡞ͬͨγεςϜ 35
36
37 աڈʹΫϩοϐϯά͍ͯͨ͠Βͦͷ݁ՌΛ࠶ར༻ Ϋϩοϐϯά݁ՌͷΩϟογϡ
38 ώʔτϚοϓ͕͋ΕॊೈͳαΠζʹରԠՄೳ ώʔτϚοϓΛΩϟογϡͯ͠//ʹ͔͔ΔॲཧΛল͘ ৽͍͠ϦΫΤετʹώʔτϚοϓΛܭࢉͯ͠ฦ͢ ϦΫΤετϕʔεͰܭࢉ͢ΔͷͰཧ͠ͳ͍͍ͯ͘ ώʔτϚοϓͷΩϟογϡ
39 ܭࢉࢿݯͷޮར༻ ֎෦Ϧιʔε͕བྷΜͩॲཧͯ͢ඇಉظॲཧ ϦΫΤετΛϚϧνεϨουͰॲཧ͍ͯ͠ΔͷͰ ޮΑ͘$16Λར༻Ͱ͖Δ
40 ఘΊΔஅ ผεϨουͰෳಈ͔͓ͯ͘͠ ΩϡʔͰλεΫΛཧ Ωϡʔ͕٧·͍ͬͯΕఘΊͯ طଘͷγεςϜͰ৴ ఘΊͨ߹ ΩϟογϡΛૣΊʹ&YQJSF͢Δ
41 ఘΊΒΕΔΈ Ͱ͖ͳ͔ͬͨ߹ ྖҬΛࢦఆͤͣʹطଘ৴αʔόʹϦΫΤετ ΫϩοϓྖҬΛܭࢉͰ͖ͨ߹ ΫϩοϓྖҬΛࢦఆͯ͠طଘ৴αʔόʹϦΫΤετ
42 ΩϟογϡʹΑΓύϑΥʔϚϯεΛҡ࣋ͭͭ͠ ॊೈͳϦΫΤετʹରԠՄೳ ͔ͭϝϯςφϯεϑϦʔ
43 ͜ͷγεςϜΛຊ൪Ͱಈ͔ͨ͠ΒͲ͏ͳ͔ͬͨ·ͨผͷػձʹɽɽɽɽ
·ͱΊ • ݱঢ়ͷը૾৴༰ʹؔΘΒͣಉ͡Α͏ʹΫϩοϐϯά͍ͯ͠Δ • ػցֶशΛ༻͍ͯը૾͝ͱʹ࠷దͳҐஔͰͷΫϩοϐϯάΛ࣮ݱ͠ Α͏ͱͨ͠ • ը૾৴γεςϜʹٻΊΒΕΔϨΠςϯγʔɾߴτϥϑΟοΫੑͷ ͋ΔΞϓϦέʔγϣϯΛ࣮͢ΔͨΊʹpythonͰͳ͘rustΛબͨ͠ •
ػցֶशΛ༻͍ͨγεςϜͰී௨ʹઃܭ͢Ε࣮ݱՄೳ • Ωϟογϡઓུɾݱ࣮తͳམͱ͠ॴΛݟ͚ͭΔ 44