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
Deep Learningライブラリ 色々つかってみた感想まとめ
Search
Takanori Ogata
April 17, 2016
Technology
18
17k
Deep Learningライブラリ 色々つかってみた感想まとめ
Takanori Ogata
April 17, 2016
Tweet
Share
More Decks by Takanori Ogata
See All by Takanori Ogata
ACCELStarsピッチ資料
conta
0
100
Convolutional Pose Machines
conta
0
1.3k
Other Decks in Technology
See All in Technology
元旅行会社の情シス部員が教えるおすすめなre:Inventへの行き方 / What is the most efficient way to re:Invent
naospon
2
330
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
360
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
0
980
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
300
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Lambdaと地方とコミュニティ
miu_crescent
2
370
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
750
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
いざ、BSC討伐の旅
nikinusu
2
780
B2B SaaS × AI機能開発 〜テナント分離のパターン解説〜 / B2B SaaS x AI function development - Explanation of tenant separation pattern
oztick139
2
220
Featured
See All Featured
For a Future-Friendly Web
brad_frost
175
9.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Teambox: Starting and Learning
jrom
133
8.8k
Code Reviewing Like a Champion
maltzj
520
39k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
KATA
mclloyd
29
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Happy Clients
brianwarren
98
6.7k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Transcript
Deep LearningϥΠϒϥϦ ৭ʑ͔ͭͬͯΈͨײ·ͱΊ @conta_
Self Introduction ॹํɹول (twitter: @conta_) CTO@ABEJA, Inc. Computer Visionͱ͔ɺMachine LearningΛͬͨ
ϓϩμΫτ։ൃΛ͍ͬͯ·͢ɻ
Deep Learning Library?
None
ʊਓਓਓਓਓਓਓਓਓʊ ʼɹଟ͗ͯͭ͢Β͍ɹʻ ʉY^Y^Y^Y^Y^Y^Y^Yʉ
Dive into Deep Learning
ˎײ͡ํʹݸਓ͕ࠩ͋Γ·͢
ࠓճհ͢ΔϥΠϒϥϦ
Caffe Caffe: UC Berkleyͷਓ͕࡞ͬͯΔɻDeepLearningք۾Ͱ͔ͳΓฮͳϥΠϒϥϦͰɺ ޭେ͖͍ ݴޠ: ɾCoreC++ɻPython, MatlabͷWrapper͕͋Δ ಛ: ɾجຊతʹProtocol
BufferͰωοτϫʔΫΛهड़
▪͍͍ͱ͜Ζ(ݸਓతײ) ɾModel ZooʹֶशࡁΈϞσϧ͕ͨ͘͞Μެ։͞ΕͯΔ ʢطʹCVPR2016ͷจͷϞσϧެ։͞ΕͯΔʣ ɾݚڀऀׂ͕ͱͬͯΔͷͰ࠷৽ͷݚڀՌ͕CaffeͰ࣮͞ΕͯͨΓ͢Δ ɾMulti-GPUʹରԠͨ͠ͷͰɺઃఆ̍ͭͰෳͷGPUΛར༻Մೳ ɾ࣮ߦׂ͕Γͱૣ͍ ɾωοτϫʔΫͷύϑΥʔϚϯεςετ͕Ͱ͖Δ(caffe testίϚϯυ)
▪ͭΒ͍ͱ͜Ζ(ݸਓతײ) ɾΧελϚΠζ͕c++ͱProtocol BufferɻɻɻϚξͭΒ͌Ηɻɻɻʢˎ̍ʣ =>ਓ͕ΧελϚΠζͨ͠ͷɺΘ͔ΒΜɻ ɾωοτϫʔΫΛProtocol BufferͰॻ͘ͷ͕ͭΒ͍ʢˎ̎ʣ =>GoogLeNet2000ߦɺResNet7000ߦɻɻɻ ʢProtocol Buffer৬ਓܳʣ ɾσʔληοτΛ࡞͢Δͷ͕େม
ɾΤϥʔ͕Θ͔Γʹ͍͘ ɾιʔείʔυΛಡΊͳ͍ͱશػೳ͑ͳ͍ɺಈ͖͕Θ͔Βͳ͍ ʢυΩϡϝϯτߋ৽͠Ζʂʣ ɾΠϯετʔϧ͕ͭΒ͍ ʢੲʹൺΔͱґଘؔͷOnOffͷΦϓγϣϯ͕͍ͨͨΊɺ ͍ͩͿϚγʣ ɾRNNΛѻ͏͜ͱͰ͖ͳ͍ʢຐվ͞ΕͨCaffeϕʔεͷͷ͋Δ͚Ͳɻɻɻʣ
▪༨ஊʢˎ̍ʣ ɾ࠷ۙPython Layer͕Ճ͞ΕͯPython͚ͩͰΧελϚΠζ Ͱ͖ΔΑ͏ʹຐվ͍ͯ͠Δ(No Documentation)
▪༨ஊʢˎ̎ʣ ɾPythonͰProtocol BufferΛੜ Ͱ͖ΔΑ͏ʹͳͬͨͨΊɺ ϧʔϓͨ͠هड़ׂ͕ͱ؆୯ʹͳͬͨ (No Documentation)
▪͜Μͳͻͱʹ͓͢͢Ί ɾ·ͣԿ͔ಈ͔͍ͨ͠ਓ ɾͱΓ͋͑ͣݚڀՌΛࢼ͍ͨ͠ਓ ɾ͕ඞཁͳਓ ɾC++ͱProtocol BufferΛษڧ͍ͨ͠ਓ ɾࠜؾڧ͘Կ͔ͱઓ͍͍ͨਓ
Tensorflow: G̋̋gleͷࢄߦྻܭࢉϥΠϒϥϦɻ ผʹDeep͚ͩ͡Όͳ͍Μ͔ͩΒͶʂ ݴޠ: ɾCoreC++ɻPythonͱC++ͲͪΒͰಈ͘ɻ ಛ: ɾࢄॲཧ͕؆୯ʹͰ͖Δ ɾGoogleͷϓϩμΫτͰԿར༻͞Ε͍ͯͯɺ҆ఆײ͕͋Δ
▪͍͍ͱ͜Ζ(ݸਓతײ) ɾࢄॲཧ͕ΊͬͪΌ؆୯ʹͰ͖Δ(Distributed Tensorflow) ɾGoogle͕MLϓϥοτϑΥʔϜΛఏڙ։࢝ ɾ࠷ۙɺTensorflow͍·ͨ͠จ͕Α͘Ͱ͖͍ͯͯΔ ɾίΞ͕C++ͳͷͰAndroidͰಈ࡞͢Δ ɾDocker Container͕མͪͯΔͷͰɺDocker͑ΔͳΒ ΠϯετʔϧʹࠔΒͳ͍ ɾTensorboard͕ΦγϟϨ
▪ͭΒ͍ͱ͜Ζ(ݸਓతײ) ɾݰਓ͚ϥΠϒϥϦ =>Έ͕ͪΐͬͱෳࡶͳͷͰཧղ͠ͳ͍ͱ͍͜ͳͤͳ͍ =>ωοτϫʔΫΛॻ͘ͷʹҰ͔Βهड़͢Δඞཁ͕͋ΔɺTheanoతͳཱͪҐஔ ɾιʔείʔυ͕େنͳͨΊվ͕େมͦ͏ ʢҰԠυΩϡϝϯτ͋Δ͚Ͳʣ ɾDistributed TensorflowΛݸਓͷࢿݯͰ׆༻͢ΔͷࠔͳͷͰɺGoogleͷϓϥοτ ϑΥʔϜΛΘͳ͍ͱԸܙΛड͚ʹ͍͘ =>ࢄίϯϐϡʔςΟϯάͷIOϘτϧωοΫɺInfiniBandΛ͍ͬͺ͍ങ͑Δ͓ۚ࣋ͪ
ͳΒԸܙΛड͚ΒΕΔ͔
▪͜Μͳͻͱʹ͓͢͢Ί ɾΈͷ෦͔ΒDeep LearningΛษڧ͍ͨ͠ਓ ɾDeep Learningɹதʙ্ڃऀ͚ͷਓ ɾେنػցֶशΛͬͯΈ͍ͨਓ ɾେنػցֶशج൫Λ࡞Γ͍ͨਓ ɾMobileʹΈࠐΈ͍ͨਓ
Chainer: PFNͷDeep LearningϥΠϒϥϦɻ ݴޠ: ɾPython(+Cuda) ಛ: ɾDefine-by-Runͱ͍͏ख๏Λͱ͍ͬͯͯɺωοτϫʔΫΛޙ͔Βղ ऍ ɾ͢Β͍͠
▪͍͍ͱ͜Ζ(ݸਓతײ) ɾωοτϫʔΫͷهड़ͷॊೈੑ͕ߴ͍ ʢಛʹRNNܥඇৗʹॻ͖͍͢ʣ ɾ෦ͷಈ࡞͕Ͳ͏ͳͬͯΔ͔ඇৗʹΘ͔Γ͍͢ ɾσόοΫ͍͢͠ ɾφ͍ΞϧΰϦζϜ͕͍ͪૣ࣮͘͞ΕͯΔ ɾCupyͱ͍͏Cuda͕؆୯ʹ͑ΔߦྻԋࢉϥΠϒϥϦؚ͕·Ε͍ͯ ͯɺࣗલͷΞϧΰϦζϜΛൺֱత؆୯ʹߴԽͰ͖Δ (C++Ͱॻ͍ͯϥούʔͱ͔ͭ͘Βͳ͍͍ͯ͘) ɾதͷਓ͕͍͢͝
▪ͭΒ͍ͱ͜Ζ(ݸਓతײ) ɾωοτϫʔΫҎ֎ͷهड़ྔ͕ଟ͘ͳͬͯ͠·͏ʢֶशͷίʔυͱ͔ʣ ɾ࣮ߦʢ࠷ۙͦͦ͜͜ૣ͍ͬΆ͍ʣ ɾDeep Learning͔ͬͯͳ͍ͱଟ͍͜ͳͤͳ͍
▪͜Μͳͻͱʹ͓͢͢Ί ɾDeep LearingΛҰ͔ΒΨοπϦษڧ͍ͨ͠ਓ ɾDeep Learningɹதʙ্ڃऀͷਓ ɾݚڀͰTry and ErrorΛ܁Γฦ͠ͳ͕ΒΞϧΰϦζϜΛ։ൃ͍ͨ͠ਓ ɾෳࡶͳωοτϫʔΫΛهड़͍ͨ͠ਓ ʢωοτϫʔΫͰ݅จॻ͖͍ͨɺσʔλʹΑͬͯॲཧΛ͚͍ͨʣ
ɾRNNͱ͔NLPͱ͔Λॻ͖͍ͨ
▪MXNet: DMLC(Distributed (Deep) Machine Learning Community)͕࡞ͬͯ ΔɻXGBoostͷ࡞ݩͱͯ͠༗໊ɻ ▪ݴޠ: ɾCoreC++ɻWrapper͕ͨ͘͞Μ͋ΓɺPythonɺC++ɺScalaɺ RɺMatlabɺJuliaͱଟݴޠରԠɻ
▪ಛ: ɾଟݴޠʂ ɾ͕͔ͳΓૣ͍ʢॴײʣ ɾmshadow(ߦྻԋࢉ)ɺps-lite(ࢄॲཧ)ͷϥΠϒϥϦ͕ϕʔε
▪͍͍ͱ͜Ζ(ݸਓతײ) ɾࢄॲཧ(1Node, Multi-GPUɺMulti-NodeɺMulti-GPUͲͪΒ ʣ͕ΊͬͪΌ؆୯ʹͰ͖Δ(Example͋Γ) ɾS3ϞσϧσʔλΛอଘ͢Δػೳ͕͋Δ ɾૣ͍ʢImageNet full datasetΛGeForce GTX 980*4Ͱ8.5)
ɾͳͥૣ͍͔͕υΩϡϝϯτͰྗઆ͞Ε͍ͯΔ ɾଟ࠷ଟݴޠ͕ਐΜͰ͍Δ ɾC++Ͱॻ͔ΕͯΔͷͰ Mobile(iOS, Android)Ͱಈ͘
▪ͭΒ͍ͱ͜Ζ(ݸਓతײ) ɾΤϥʔ͕Θ͔Γʹ͍͘ɺຊʹΘ͔Γʹ͍͘ ɾυΩϡϝϯτ͕গͳ͍ =>ಛघͳֶशσʔλΛ࡞ͬͨΓ͢Δͷେม =>͍͜͠ͱΛ͠Α͏ͱ͢ΔͱιʔεΛಡ·ͳ͚ΕͳΒͳ͍
▪͜Μͳͻͱʹ͓͢͢Ί ɾDeep Learningɹதʙ্ڃऀ͚ͷਓ ɾΛٻΊ͍ͯΔਓ ɾPythonɺC++Ҏ֎Ͱར༻͍ͨ͠ਓ
▪Keras: PythonͷDeep LearningϥΠϒϥϦɻ ࠷ۙv1.0͕ϦϦʔε͞Εͨɻ ▪ݴޠ: ɾPython ▪ಛ: ɾTorchʹࣅͨهड़ํ๏ɻ ɾߦྻԋࢉͷόοΫΤϯυTheanoͱTensorFlowΛར༻͍ͯͯ͠ɺ Γସ͑Δ͜ͱ͕Ͱ͖Δ
▪͍͍ͱ͜Ζ(ݸਓతײ) ɾωοτϫʔΫهड़͕؆୯ɺॊೈ ϕʔεͷAPI͕ͨ͘͞Μ४උ͞Ε͍ͯΔͨΊɺهड़ྔগͳ͘ࡁ Ήɻ؆୯ͳωοτϫʔΫͰ͋ΕAPIΈ߹ΘͤͰͳΜͱ͔ͳΔɻ v1.0.0͔Β functional APIͳΔͷ͕ग़དྷͯɺ ඇৗʹײతʹωοτϫʔΫΛهड़Ͱ͖ΔΑ͏ʹͳͬͨ ɾֶश͕؆୯ ScikitͷΑ͏ʹfit()ؔݺͼग़ͤΑΖͬͯ͘͘͠ΕΔ
ɾιʔε͕ಡΈ͍͢
▪ͭΒ͍ͱ͜Ζ(ݸਓతײ) ɾMulti-GPUඇରԠ TheanoΛBackendͱͯͬͯ͠ΔͱMulti-GPUͭΒ͍ɻ Tensorflowͷ͓͔͛ͰMulti-GPU͕؆୯ʹͰ͖ΔΑ͏ʹͳͬͨʁ ɾPython͔͠ରԠ͍ͯ͠ͳ͍
▪͜Μͳͻͱʹ͓͢͢Ί ɾDeep LearningΛΓ͍ͨਓશൠ ɾ͋·Γࡉ͔͍͜ͱؾʹͤͣʹαΫοͱωοτϫʔΫΛ࡞ Γ͍ͨਓ ˎݸਓతʹҰ൪͓͢͢Ί
·ͱΊ ▪Caffe ɾͱΓ͋͑ͣDeep LearingʢCNNʣΓ͍ͨਓ ɾݚڀՌΛࢼ͍ͨ͠ਓ ▪Tensorflow ɾࢄίϯϐϡʔςΟϯάΓ͍ͨਓ ▪Chainer ɾΞϧΰϦζϜ։ൃ͍ͨ͠ਓ ɾຊؾͰDeep
LearningΛษڧ͍ͨ͠ਓ ▪MXNet ɾ͕ඞཁͳਓ ɾMobileͰಈ͔͍ͨ͠ਓ ▪Keras ɾͱΓ͋͑ͣDeep Learingษڧ͍ͨ͠ਓ ɾΊΜͲ͍͘͞ͷͰ͋Δఔڥ͕४උ͞Ε͍ͯͯཉ͍͠ͱࢥ͏ਓ
We are hiring! → https://www.wantedly.com/companies/abeja