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

iOSと人工知能(AI) -GPU並列演算の仕組みと機械学習-

yuky_az
September 17, 2017

iOSと人工知能(AI) -GPU並列演算の仕組みと機械学習-

日本最大のiOSカンファレンス、iOS2017での発表内容です。
デモに使用した動画は以下のリンクから視聴することができます。
https://twitter.com/yuky_az/status/910266701291315200
https://youtu.be/mRu4WkryeWs
https://youtu.be/13qsJfwtdks
https://youtu.be/evo7_GH-TtM

yuky_az

September 17, 2017
Tweet

More Decks by yuky_az

Other Decks in Technology

Transcript

  1. J04ͱਓ޻஌ೳ "*

    (16ฒྻԋࢉͷ࢓૊Έͱػցֶश
    :VLJOBHB"[VNB
    !ZVLZ@B[
    J04%$+BQBO

    View Slide

  2. ࣗݾ঺հ
    :VLJOBHB"[VNB

    ʢզ࠺޾௕ʣ
    ΤϯδχΞ3%ϓϩάϥϛϯάߨࢣ
    େֶͷݚڀһɺϝʔΧʔۈ຿ɺϓϩάϥϛϯά
    ߨࢣɺϕϯνϟʔۈ຿Λܦͯݱࡏ͸ϑϦʔϥϯε
    !ZVLZ@B[
    ΈΜͳͷ"*ߨ࠲

    ࣮ફσʔλαΠΤϯεػցֶशXJUI1ZUIPO
    6EFNZͰडߨੜ਺͕ਓΛಥഁʂ
    ޷͖ͳݴ༿
    5IFCFTUXBZUPQSFEJDUUIFGVUVSFJTUPJOWFOUJU

    View Slide

  3. ൃදͷྲྀΕ
    ষਓ޻஌ೳ "*
    ͱ͸
    ষJ04ͷதͷ"*
    ষ.FUBMʹΑΔ(16ฒྻԋࢉ (1(16

    ষ.FUBMʹΑΔ"*ͷ࣮૷

    View Slide

  4. 1ষ. ਓ޻஌ೳʢAIʣͱ͸
    wਓ޻஌ೳͷ֓ཁ
    wػցֶशͱ͸
    wχϡʔϥϧωοτϫʔΫͱ͸
    w4XJGUͰ࣮૷͢ΔόοΫϓϩύήʔγϣϯ

    View Slide

  5. ੜ෺ͷ஌ೳΛ໛฿͢Δٕज़
    ਓ޻஌ೳͱ͸Կ͔ʁ

    View Slide

  6. ڧ͍AIͱऑ͍AI
    ڧ͍"*
    ˠੜ෺ʢಛʹώτʣͷ஌ೳʹഭΔ"*
    FHυϥ͑΋Μɺమ࿹ΞτϜɺ$10ͳͲ
    ऑ͍"*
    ˠݶఆతͳ໰୊ղܾ΍ਪ࿦
    FHνΣε΍কعͷ"*ɺը૾ೝࣝͳͲ

    View Slide

  7. ਓ޻஌ೳͷ༻్ʢऑ͍AIʣ
    ը૾ॲཧ
    ˠ෺ମೝࣝɺը૾ੜ੒

    Ի੠ɺձ࿩
    ˠԻ੠ೝࣝɺձ࿩Τϯδϯ
    จষͷೝࣝɺจষͷ࡞੒
    ˠνϟοτϩϘοτɺখઆͷࣥච
    ػց੍ޚ
    ˠࣗಈӡసɺ࢈ۀ༻ϩϘοτ
    ࡞ۂɺֆըͳͲͷΞʔτ
    ˠࣗಈ࡞ۂɺը෩ͷ໛฿
    FUDʜ

    View Slide

  8. ਓ޻஌ೳͷछྨ
    ػցֶश
    ˠίϯϐϡʔλ͕ܦݧɺֶशΛߦ͏

    Ҩ఻తΞϧΰϦζϜ
    ˠੜ෺ͷҨ఻ࢠΛ໛฿ɺΞϧΰϦζϜ͕ಥવมҟٴͼަ഑͢Δ

    ܈஌ೳ
    ˠੜ෺ͷ܈ΕΛ໛฿ɺݸମͷू߹ମ͕ߴ౓ͳৼΔ෣͍
    ϑΝδΠ੍ޚɺΤΩεύʔτγεςϜɺFUDʜ

    View Slide

  9. ػցֶशͱ͸
    ਓ޻஌ೳͷҰ෼໺
    ίϯϐϡʔλϓϩάϥϜ͕ܦݧɺֶशΛߦ͏γεςϜ

    View Slide

  10. ػցֶशͷΞϧΰϦζϜ
    αϙʔτϕΫλʔϚγϯ
    ˠ௒ฏ໘Λ܇࿅͠෼ྨΛߦ͏
    ڧԽֶश
    ˠใु͕࠷΋ߴ͍ํ๏Λֶश
    ܾఆ໦
    ˠࢬ෼͔ΕͰσʔλΛ෼ྨ

    χϡʔϥϧωοτϫʔΫ
    ˠ೴ͷਆܦࡉ๔ωοτϫʔΫΛ໛฿

    Ξϯαϯϒϧֶशɺ,ۙ๣๏ɺFUDʜ

    View Slide

  11. χϡʔϥϧωοτϫʔΫʹΑΔػցֶश
    Ϛ΢εͷେ೴৽ൽ࣭ʹ͓͚Δਆܦࡉ๔
    *NBHF/SFUT$$CZTB/FVSPO8JLJQFEJB
    χϡʔϥϧωοτϫʔΫ͸ɺੜ෺ͷਆܦࡉ๔ωοτϫʔΫΛ໛฿

    View Slide

  12. ਆܦࡉ๔ͷωοτϫʔΫ
    ग़ྗ
    ೖྗ
    χϡʔϩϯ
    थঢ়ಥى
    ώτͷ೴ʹ͸ԯݸͷਆܦࡉ๔
    ஹݸͷ݁߹ʢγφϓεʣ
    γφϓε
    ࣠ࡧ

    View Slide

  13. ਆܦࡉ๔ͷϞσϧԽ
    ೖྗ
    ೖྗ
    ೖྗ
    ɾ
    ɾ
    ɾ
    ɾ
    ɾ
    ɾ
    ग़ྗ
    ೖྗY݁߹ՙॏͷ߹ܭόΠΞεY݁߹ՙॏ
    Λग़ྗʹม׵͢Δؔ਺
    χϡʔϩϯ
    όΠΞε
    ݁߹ՙॏ

    View Slide

  14. χϡʔϥϧωοτϫʔΫ
    ೖྗ
    ೖྗ
    ग़ྗ
    ग़ྗ
    χϡʔϩϯ

    View Slide

  15. όοΫϓϩύήʔγϣϯʹΑΔֶश
    ೖྗ
    ೖྗ
    ग़ྗ
    ग़ྗ
    χϡʔϩϯ
    ೖྗ૚
    தؒ૚
    ग़ྗ૚
    ਖ਼ղ
    ਖ਼ղ
    ޡࠩ
    ޡࠩ
    ݁߹ՙॏͷमਖ਼
    ݁߹ՙॏͷमਖ਼
    ݁߹ՙॏͷमਖ਼
    ݁߹ՙॏͷमਖ਼

    View Slide

  16. σΟʔϓϥʔχϯάͱ͸
    ଟ૚Ͱߏ੒͞ΕΔχϡʔϥϧωοτϫʔΫΛ༻͍ͨػցֶश

    View Slide

  17. Demo: SwiftʹΑΔػցֶश
    ࠷ٸ߱Լ๏ͷΞϧΰϦζϜʹΑΓ
    ޡࠩΛٯ఻೻͢Δ ߦ΄Ͳͷ4XJGUίʔυ

    ֤૚ͷχϡʔϩϯ਺͸< >ݸ
    TJOؔ਺Λਖ਼ղ஋ͱͯ͠
    όοΫϓϩύήʔγϣϯʹΑΓֶश
    χϡʔϥϧωοτϫʔΫ
    ޡࠩ
    8JLJQFEJB#BDLQSPQBHBUJPO
    ݁߹ՙॏͷमਖ਼ྔʢБֶश܎਺ʣ
    ˠग़ྗ૚
    ˠग़ྗ૚Ҏ֎

    View Slide

  18. Demo: SwiftʹΑΔػցֶश

    View Slide

  19. 2ষ. iOSͷதͷAI
    w$PSF.-
    w.14 .FUBM1FSGPSNBODF4IBEFST

    w#//4 #BTJD/FVSBM/FUXPSL4VCSPVUJOFT

    w(BNFQMBZ,JU

    View Slide

  20. Frameworkͷߏ੒
    $PSF.-
    :PVSBQQ
    Vision
    "DDFSBSBUFBOE#//4
    ϋʔυ΢ΣΞଆ
    Ϣʔβʔଆ
    .FUBM1FSGPSNBODF4IBEFST
    Natural Language Processing GameplayKit
    IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPODPSFNM

    View Slide

  21. Core ML
    ˠ܇࿅ʢֶशʣࡁΈͷϞσϧΛΞϓϦʹಋೖ͢Δ
    ˠػցֶशͷ༧ଌʹಛԽ
    ˠओཁͳػցֶशπʔϧͷ܇࿅ࡁΈϞσϧΛ࢖༻Մ

    ʢTDJLJUMFBSOɺ,FSBTɺ$BGFFɺFUDʜʣ
    Ԡ༻
    ˠإೝࣝɺ෺ମೝࣝ
    ˠࣗવݴޠॲཧɺ຋༁
    ˠՁ֨ͳͲͷ༧ଌ


    View Slide

  22. .14 .FUBM1FSGPSNBODF4IBEFST

    ˠ(16Λ༻͍ͨ.FUBMͷߴ͍ԋࢉػೳΛΞϓϦʹಋೖ
    ˠػցֶशͷ༧ଌʹಛԽ
    ˠ৞ΈࠐΈχϡʔϥϧωοτϫʔΫͷ"1*ʢ.14$//ʣ

    ˠ$PSF.-ΑΓ΋ίʔυ͕ෳࡶ

    "QQMFͷαϯϓϧίʔυ
    ˠ.14$//)FMMP8PSMEʢจࣈೝࣝʣ
    ˠ.FUBM*NBHF3FDPHOJUJPOʢը૾ೝࣝʣ
    ˠ.FUBM*NBHF'JMUFSTʢը૾ϑΟϧλʣ


    View Slide

  23. #//4 #BTJD/FVSBM/FUXPSL4VCSPVUJOFT

    ˠ਺஋ܭࢉॲཧશൠΛѻ͏"DDFMFSBUFʹؚ·ΕΔ

    ˠ$16ͷੑೳΛϑϧʹҾ͖ग़ͯ͠ԋࢉΛߦ͏
    ˠػցֶशͷ༧ଌʹಛԽ

    ˠ৞ΈࠐΈχϡʔϥϧωοτϫʔΫΛαϙʔτ


    View Slide

  24. ˠήʔϜͷϩδοΫΛߏங͢ΔͨΊͷϑϨʔϜϫʔΫ
    ˠ$PSF.-ΛϕʔεʹɺఢΩϟϥͳͲͷಈ͖ʹ
    ɹֶशࡁΈͷܾఆ໦ͳͲΛ࢖༻Մ
    ˠϛχϚοΫε๏ʹΑΔରઓ૬खͷ"*
    ˠ"HFOUT (PBMT BOE#FIBWJPSTʹΑΔ
    ɹࣗ཯తʹಈ͘ΦϒδΣΫτ
    (BNFQMBZ,JU

    View Slide

  25. "#JPOJDνοϓͷొ৔
    ˠඵ࠷େ ԯͷԋࢉॲཧ
    ˠχϡʔϥϧΤϯδϯʹΑΔػցֶशΞϧΰϦζϜͷߴ଎Խ

    ˠ"QQMFಠࣗઃܭͷ(16

    ϑϨʔϜϫʔΫˍϋʔυ΢ΣΞͱ΋ʹɺ
    ୺຤ଆͷ"*؀ڥ͕੔͏

    View Slide

  26. 3ষ. MetalʹΑΔGPUฒྻԋࢉ (GPGPU)
    w(16ฒྻԋࢉͱ͸
    w.FUBMͷొ৔ਓ෺
    wύϑΥʔϚϯεͷଌఆ

    View Slide

  27. GPUฒྻԋࢉʢGPGPUʣͱ͸
    GPUͷԋࢉϦιʔεΛը૾ॲཧҎ֎ʹར༻
    $16 (16

    View Slide

  28. .FUBMͱ͸
    0QFO(-ͱ0QFO$-ʹࣅͨػೳΛҰͭͷ"1*ʹ౷߹
    $16ͱ(16ͷγʔϜϨεͳ࿈ܞ

    View Slide

  29. CPUͱGPUͷ࿈ܞ
    EFWFMPQFSBQQMFDPNNFUBM

    View Slide

  30. Metal CPUଆͷొ৔ਓ෺ 1
    .5-%FWJDF୯Ұͷ(16ͷΠϯλʔϑΣΠε
    .FUBMؔ࿈ͷ"1*͸ଟ͕͘ϓϩτίϧͰهࡌ
    EFWJDF.5-$SFBUF4ZTUFN%FGBVMU%FWJDF

    QSJOUEFWJDFOBNF"QQMF"(16

    View Slide

  31. Metal CPUଆͷొ৔ਓ෺ 2
    .5-%FWJDF͕ҎԼΛੜ੒

    .5--JCSBSZˠγΣʔμʔ΁ͷΠϯλʔϑΣΠε
    .5-'VODUJPOˠ.FUBM4IBEJOH-BOHVBHFͰॻ͔Εͨؔ਺
    .5-$PNQVUF1JQFMJOF4UBUFˠ.5-'VODUJPOΛίϯύΠϧ͞Εͨίʔυʹม׵
    .5-$PNQVUF$PNNBOE&ODPEFSˠίϚϯυΛ(16༻ʹΤϯίʔυ
    .5-$PNNBOE#V⒎FSˠ(16Ͱ࣮ߦ͞ΕΔίϚϯυΛ֨ೲ
    .5-$PNNBOE2VFVFˠ্هͷΩϡʔɺίϚϯυͷ࣮ߦॱΛ؅ཧ

    View Slide

  32. Metal Shading Language
    JODMVEFNFUBM@TUEMJC
    VTJOHOBNFTQBDFNFUBM
    LFSOFMWPJEBEE0OF DPOTUEFWJDFqPBUJOQVU%BUB<<CV⒎FS
    >>
    EFWJDFqPBUPVUQVU%BUB<<CV⒎FS
    >>
    VJOUJE<<UISFBE@QPTJUJPO@JO@HSJE>>

    \
    qPBUSFTVMUJOQVU%BUB
    SFTVMUG
    PVUQVU%BUBSFTVMU
    ^
    ֤εϨου͝ͱʹ࣮ߦ͞ΕΔ

    View Slide

  33. Experiment: GPU vs CPU
    ɾೖྗʹΛ଍ͯ͠Ҿ͘Λ܁Γฦ͢
    ɾ$16ଆͰ͸ɺ্هΛສY/ճ
    ɾ(16ଆͰ͸ສεϨουY/ճ
    LFSOFMWPJEBEE"OE4VCUSBDU DPOTUEFWJDFqPBUJOQVU%BUB<<CV⒎FS
    >>
    EFWJDFqPBUPVUQVU%BUB<<CV⒎FS
    >>
    VJOUJE<<UISFBE@QPTJUJPO@JO@HSJE>>

    \
    qPBUSFTVMUJOQVU%BUB
    GPS VJOUJJ/J
    \
    SFTVMUG
    SFTVMUG
    ^
    PVUQVU%BUBSFTVMU
    ^

    View Slide

  34. Experiment: CPU vs GPUͷ݁Ռ
    ഒఔ౓

    View Slide

  35. Experiment: CPU vs GPUͷ݁Ռʢର਺ʣ
    $16(16ؒͷ΍ΓͱΓΛ࠷খݶʹ͢Δ͜ͱ͕େࣄ

    View Slide

  36. 4ষ. MetalʹΑΔAIͷ࣮૷
    wχϡʔϥϧωοτϫʔΫόοΫϓϩύήʔγϣϯ
    wਓ޻ੜ໋ͷ࣮૷
    w܈஌ೳͷ࣮૷

    View Slide

  37. ݁߹ՙॏͷमਖ਼ྔΛ౷߹͠ɺ৽ͨͳ݁߹ՙॏͱ͢Δ
    (16
    $16
    JE
    ਖ਼ղ஋
    ͱͷޡࠩ
    JE
    ʜ
    JE
    QPTJUJPO QPTJUJPO QPTJUJPO
    ਖ਼ղ஋
    ͱͷޡࠩ
    ਖ਼ղ஋
    ͱͷޡࠩ
    Demo: MetalʹΑΔػցֶशͷྫ

    View Slide

  38. ʢ6**NBHF7JFXͷαϒΫϥεʣ
    7JFX$POUSPMMFSTXJGU
    .FUBM.BOBHFSTXJGU 4IBEFSNFUBM
    Demo: MetalʹΑΔػցֶशͷྫ

    View Slide

  39. Demo: MetalʹΑΔػցֶशͷྫ

    View Slide

  40. Demo: MetalͰ࣮૷͢Δਓ޻ੜ໋ -ઢ஬ͷίωΫτίʔϜ
    $ɾΤϨΨϯε8JLJQFEJB
    $ɾΤϨΨϯε8JLJQFEJB
    ઢ஬ͷҰछɺ$ΤϨΨϯε
    ମࡉ๔ݸͷ͏ͪɺ໿ݸ͕ਆܦࡉ๔
    ਆܦࡉ๔ͷ઀ଓঢ়ଶΛදͨ͠஍ਤʢίωΫτίʔϜʣ

    View Slide

  41. Demo: MetalͰ࣮૷͢Δਓ޻ੜ໋ -֓೦
    B
    ೏͍ͷ෼෍
    ײ֮ثͷҐஔ
    C
    D
    E
    F
    ೖྗ1 = a - b

    ೖྗ2 = c - d

    ೖྗ3 = e
    ଎౓
    < >ͷχϡʔϥϧωοτϫʔΫ
    ೖྗ1 ೖྗ2 ೖྗ3
    ਐߦ֯౓ͷ

    मਖ਼ྔ
    རಘ རಘײ৘

    View Slide

  42. Demo: MetalͰ࣮૷͢Δਓ޻ੜ໋

    View Slide

  43. Demo: ܈஌ೳ
    ਓ޻஌ೳͷҰछɺूஂͱͯ͠ߴ౓ͳৼΔ෣͍

    View Slide

  44. Demo: ܈஌ೳ -܈Εͷ3ͭͷϧʔϧ
    B౳ڑ཭֤ݸମ͕౳ڑ཭ΛอͭΑ͏ʹಈ͘
    Cฒߦ֤ݸମ͕ଞͷݸମͱಉ͡޲͖ʹͳΔΑ͏ʹಈ͘
    D౳଎֤ݸମ͸ଞͷݸମͱಉ͡଎౓ʹͳΔΑ͏ʹಈ͘

    View Slide

  45. Demo: ܈஌ೳ -਺ࣜԽ
    B౳ڑ཭
    Cฒߦ
    D౳଎౓

    View Slide

  46. Demo: ܈஌ೳ -γΣʔμʔͷίʔυ
    LFSOFMWPJENPWF ʜ
    GPS VJOUJJOPEF$PVOUJ
    \
    ʜ
    ౳ڑ཭
    qPBUBUUSBDUJPOFYQ C EJTUBODFB
    EJTUBODFB


    qPBUSFQVMTJPOFYQ CEJTUBODFEJTUBODF

    E"OHMFBMQIB OFBS"OHMFBUUSBDUJPOGBS"OHMFSFQVMTJPO
    JOUFSWBM
    ฒߦ
    qPBUQBSBMMFM"OHMF%JGHFU3BOHFE"OHMF OPEFBOHMFDVSSFOU/PEFBOHMF

    E"OHMFCFUBQBSBMMFM"OHMF%JGFYQ CEJTUBODFEJTUBODF
    JOUFSWBM
    ౳଎౓
    qPBUOPEF7FMPDJUZTRSU OPEFWFMPDJUZ9OPEFWFMPDJUZ9OPEFWFMPDJUZ:OPEFWFMPDJUZ:

    WFMPDJUZHBNNB OPEF7FMPDJUZWFMPDJUZ
    FYQ CEJTUBODFEJTUBODF

    ^

    View Slide

  47. Demo: ܈஌ೳ

    View Slide

  48. ·ͱΊ
    "*༻ͷϑϨʔϜϫʔΫͷॆ࣮
    ˠ୺຤ଆͰಈ࡞͢Δ"*ͷଘࡏײͷ޲্
    J04ͱਓ޻஌ೳʢ"*ʣʹ͍ͭͯ
    .FUBMʹΑΔ(16ฒྻԋࢉ
    ˠ"*ʹඞཁͳ๲େͳϦιʔεΛఏڙ

    ˠࣗ༝ʹਓ޻஌ೳΛߏஙͰ͖Δ
    J04ΞϓϦʹɺ஌ੑ͕॓Γͭͭ͋Δ

    View Slide

  49. ͝੩ௌɺ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

    View Slide

  50. ৞ΈࠐΈχϡʔϥϧωοτϫʔΫ
    ৞ΈࠐΈχϡʔϥϧωοτϫʔΫ
    ˠ$POWPMVUJPOBM/FVSBM/FUXPSL $//

    ˠώτͷࢹਆܦٴͼࢹ֮໺Λ໛฿
    ˠը૾಺ͷಛ௃Λநग़͠ɺ෺ମͷೝࣝΛߦ͏
    $//
    ωί
    Πψ
    ΢αΪ
    ωζϛ
    ʜ

    View Slide

  51. %$("/
    ˠ%FFQ$PWPMVUJPOBM(FOFSBUJWF"EWFSTBSJBM/FUXPSLT
    ˠآ࡞ऀɺؑఆऀͷͭͷχϡʔϥϧωοτϫʔΫ
    ˠ্ه͕૬ޓʹ੾᛭ୖຏ͢Δ͜ͱͰɺຊ෺Β͍͠ը૾͕ੜ੒͞ΕΔ
    ϥϯμϜͳσʔλ
    (FOFSBUPS
    آ࡞ऀ

    %JTDSJNJOBUPS
    ؑఆऀ

    ਅ࡞

    ؑఆऀ͕
    ὃ͞ΕΔ
    آ࡞

    View Slide

  52. ࣮ԋ case1
    IUUQTZPVUVCFD"60+XNF6"
    ЋЌ—Ѝ

    View Slide

  53. ࣮ԋ case2
    IUUQTZPVUVCF(KES:&3:,7D
    ЋЌЍ

    View Slide