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
530
Featured
See All Featured
Side Projects
sachag
452
42k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Making Projects Easy
brettharned
115
5.9k
A Philosophy of Restraint
colly
203
16k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Code Review Best Practice
trishagee
64
17k
For a Future-Friendly Web
brad_frost
175
9.4k
Embracing the Ebb and Flow
colly
84
4.5k
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