WinMLã¯ãéçºè ãWindows 10ããã€ã¹ã®ãã¹ãŠã®æ©èœã䜿çšããŠäºååŠç¿æžã¿ã®æ©æ¢°åŠç¿ã¢ãã«ãèšç®ããOpen Neural Network ExchangeïŒONNXïŒåœ¢åŒã§ã¢ããªã±ãŒã·ã§ã³ã«ããŒãã§ããããã«ããæ°ããAPIã»ããã§ãã
é·ããŠWin-Winã®äŒçµ±ã«åŸããŸããïŒWinPhoneã¯èŠããŠããŸãïŒãAppleã®iOSåãCoreMLããã³Android 8.1åãTensorFlow Lite / Neural Networks APIã«åŸã£ãŠãDirectMLäžã§å®è¡ããéçºè åãã®é«ã¬ãã«WinML APIãå ¬éããŠããŸãã ãã®ã¬ã€ã€ãŒã¯ãDirectX 12ã䜿çšããããã³ã³ãã¥ãŒãã£ã³ã°ããã€ã¹ïŒCPU / VPU / GPUïŒã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸãã
éçºã®æ¬è³ªã¯ãæºåãããæ©æ¢°åŠç¿ã¢ãã«ãã¯ã©ãŠããŸãã¯å°çšããã±ãŒãžïŒããšãã°ãAnacondaãMicrosoft Cognitive ToolkitãTensorFlowïŒããUWPã¢ããªã±ãŒã·ã§ã³ããã³Windows 10ã®åŸæ¥ã®Windowsã¢ããªã±ãŒã·ã§ã³ïŒWPF / WinForms / ConsoleAppïŒã«è»¢éããããšã§ããããã«ãã¢ãã«ãååŸããããšãã§ããŸãAzure Machine Learning Workbenchã䜿çšãããšããŸããªããAzure Custom Vision Serviceã¯Windowsçšã®ONNXã¢ãã«ã®äœæããµããŒãããŸãã WinML APIã¯ãWindows 10ã®ãã¹ãŠã®ãšãã£ã·ã§ã³ã§äœ¿çšã§ããŸãã
ããã¯ãWindowséçºè ãé·å¹ŽåŸ ã¡æãã§ãããœãªã¥ãŒã·ã§ã³ã§ãã ãã€ã¯ããœããã¯å¿«é©ãªãšã³ã·ã¹ãã ãäœæããŸããã 競åãããšã³ã·ã¹ãã ã®èª²é¡ã¯ããŠãŒã¶ãŒãšéçºè ããšã³ã·ã¹ãã ã«åŒã蟌ãããšã§ãã æ©æ¢°åŠç¿ã«é¢ããŠã¯ãWindowsãå¿ããå¿ èŠããããšããéæ¿ãªæèŠãããããŸãã ãã€ã¯ããœããã¯ãããèªèããŠããã次ã®äžæ©ãèžã¿åºããæ°ããåžå Žã«åå ¥ããŠæçè«è ãæã¡è² ããããšãæãã§ããŸãã
ã¢ãã«ãã¬ãŒãã³ã°ããŒã«ãšãããã䜿çšããã¢ããªã±ãŒã·ã§ã³éã®ã¢ãã«äº€æã®ãã¯ãããžãŒã¯ãMicrosoftãFacebookãAmazonãšãã£ã倧æãã¯ãããžãŒå€§æããµããŒãããONNXãããžã§ã¯ãã«åºã¥ããŠããŸãã éçºè ã¯ãPyTorchãCaffe2ããã³ãã®ä»ã®ã¢ãã«ãONNX圢åŒã«å€æããããããã¢ããªã±ãŒã·ã§ã³ã«çµ±åã§ããŸãã åæã«ãæçµã¢ããªã±ãŒã·ã§ã³ã®éçºè ã¯ãçµéšè±å¯ãªæ©æ¢°åŠç¿ã®å°é家ã§ããå¿ èŠã¯ãããŸããã ã¢ãã«ã¯é¢æ°ã§ããããã®å ¥åã«å¯ŸããŠæºåãããããŒã¿ã»ãããéä¿¡ããåä¿¡ããåçã解éããå¿ èŠãããããšãç解ããããšã ããå¿ èŠã§ãã
ããã«ãæåã¯ãã¥ãŒã©ã«ãããã¯ãŒã¯ã¢ãã«ã®ã¿ãæ ŒçŽããONNX圢åŒãèŠãŸããã ãããžã§ã¯ãã®ãŠã§ããµã€ãã«ãããšãONNXã¯ãã£ãŒãã©ãŒãã³ã°ã¢ãã«ãè¡šãããã®ãªãŒãã³åœ¢åŒã§ãã ã¯ãããããŠOpen Neural Network Exchangeã®ååã§ã ãã ããWinMLã§å ¬éãããŠããããã¥ã¡ã³ãã«ã¯ãWinMLToolsããã±ãŒãžã䜿çšããŠãµããŒããã¯ã¿ãŒãã·ã³ã¢ãã«ïŒ ãµããŒããã¯ã¿ãŒã¡ãœãã ïŒãONNXã«è»¢éããäŸãèšèŒãããŠããŸãã SVMã¯ç·åœ¢åé¡åšã®ãã¡ããªãŒã«å±ããååãšããŠãã¥ãŒã©ã«ãããã¯ãŒã¯ã¢ãã«ã«ãããã³ã°ã§ããŸãã ç§ãèŠããŸã§ãä»ã®ã©ã®ã¢ãã«ãONNXã«ã¢ããããŒãã§ããŸããã ããžã¹ãã£ãã¯ååž°ã¢ãã«ïŒå®éã«ã¯1ã€ã®ãã¥ãŒãã³ïŒãŸãã¯ç·åœ¢ååž°ïŒæŽ»æ§åé¢æ°ã®ãªããã¥ãŒãã³ïŒãã¢ã³ããŒãããããšãã§ããŸãã ONNXã«ã¢ããããŒãããŠCNTKïŒMicrosoft Cognitve ToolkitïŒã§æãåçŽãªMLPã¢ãã«ãäœæããæåã®çµéšã¯å€±æããŸããã éžæãããã€ããŒãã©ã¡ãŒã¿ãŒãçŸåšã®åœ¢åŒã®å®è£ ã«å€æã§ããŸããã§ããã äºææ§ã®åé¡ã ããããããã¯CNTKããŒãžã§ã³2.3.1ã§ããã 1é±éåãCNTK 2.5ããªãªãŒã¹ãããŸããã æ°ããããŒãžã§ã³ã§ã¯ãONNXãµããŒãã®æ¹åã«ã€ããŠæžããŠããŸãã
MLã¯ã代æ¿ã©ã€ãã©ãªãä»ããŠ.Net以åã§å©çšã§ããŸããã ããšãã°ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®Accord.Netã WinMLã®æçšæ§ã¯ãç¹å®ã®æšæºãæäŸããããšã§ããããã«ãããäžæ¹ã§ã¯äžè¬çãªããã±ãŒãžããã¢ãã«ãååŸã§ããä»æ¹ã§ã¯ããŸããŸãªããŒããŠã§ã¢ã§ã¢ãã«ãå®è¡ã§ããŸãã
Microsoftã¯ãã¬ãŒã³ããŒã·ã§ã³ã§ãDirectMLã¬ã€ã€ãŒãä»ããŠããŸããŸãªãã©ãããã©ãŒã ã«ããŒããããã¢ãã«ããã°ããèšç®ãããšè¿°ã¹ãŸããã éçºè ã«ãšã£ãŠãããŒããŠã§ã¢ããã³ãœãããŠã§ã¢ãã©ãããã©ãŒã ã®åç©åçšã®èšç®ã®æé©åã¯å·šäººçã§ãæã«ã¯éåŽåã§ãã ãã€ã¯ããœãããèšç»ãããšãããã¢ããªã±ãŒã·ã§ã³ã¯ãã¹ã¯ãããã ãã§ãªããXboxãHololensãããã«ã¯IoTã§ãåäœããŸãã
CPU / GPUå°çšã®ã«ãŒãã«/ã¢ãžã¥ãŒã«IntelãAMDãQualcommãNVidiaã¯ãããŒããŠã§ã¢ã«é¢äžã§ããŸãã ã°ã©ãã£ãã¯ã«ãŒãããæã¡ã§ããïŒ ã¢ãã«ã¯ããã§åäœããŸãã ãããªã«ãŒãã¯ãããŸããããIntelã¯ãããŸããã¢ãã«ã¯ããã¯ãã«åœä»€AVX256ãŸãã¯AVX512ã§ãåäœããŸãã çµ±åã°ã©ãã£ãã¯ã¹ãé¢ä¿ããå ŽåããããŸãã IoTããã€ã¹ã®èšç®èœåãäžåå-Intel Movidius VPUãæ¥ç¶ããŸãã ããã¯ãã¹ãŠãæ¢åã®æ©åšã®èšç®ã¢ãã«ãèªåçã«åçã«ã³ã³ãã€ã«ããæè¡ã®ãããã§ãã
éçºè ã¯ãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšå¯èœãªæ©åšãå¿é ããå¿ èŠã¯ãããŸããã WinMLã¡ã«ããºã ã¯ãããŒããŠã§ã¢ãåçã«äœ¿çšããå¿ èŠãªãã€ãã£ãã³ãŒããäœæããŠãããã€ã¹ã§äœ¿çšå¯èœãªæ©åšããæ倧ã®ããã©ãŒãã³ã¹ãååŸããŸãã ããã«å°è±¡çãªã®ã¯ãSnapDragon 835ãå®è¡ããŠããæ°ããã©ããããããã¿ãã¬ãããããã«ã¯IoTããã€ã¹ã§ãåäœããWinMLã®æ©èœã§ãã ãããã£ãŠãå©çšå¯èœãªãã¹ãŠã®è¿œå ã®èšç®èœåã䜿çšã§ããããããååšããªãå Žåã¯ãèšç®ã«ååãªã®ã¯CPUã ãã§ãã
æ¥ã®æŽæ°ã«ãããéçºè ã¯IoTããã€ã¹ããã¯ãŒã¯ã¹ããŒã·ã§ã³ããµãŒããŒãããŒã¿ã»ã³ã¿ãŒã«è³ãWindowsããã€ã¹ãã¡ããªå šäœã§WinMLãã©ãããã©ãŒã ã䜿çšã§ããŸãã WinMLãã¬ãã¥ãŒãªãªãŒã¹ã¯ãFP32ã³ã³ãã¥ãŒãã£ã³ã°ããµããŒãããŠããŸãã æçµããŒãžã§ã³ã¯FP16ããµããŒãããããšãçŽæãããŠããŸãã ä»æ¥ã§ã¯ããã¯é¢ä¿ãããŸããããVolta GPUã®ç»å Žã«ãããFP16ãã³ãœã«ã«ãŒãã«ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãïŒç¹å¥ã«èšç·Žãããã¢ãã«ã®å ŽåïŒã Microsoftã¯ãã§ã«8åã®å éãå®èšŒããŠããŸãã
ãã®çµæãéçºè ã«ã¯å€ãã®å©ç¹ããããŸãã
äœã¬ã€ãã³ã· ããªã¢ã«ã¿ã€ã ã®çµæã Windowsã¯ãPCãªãœãŒã¹ã䜿çšããŠã¢ãã«ãèšç®ã§ãããããç»åããããªãªã©ã®å€§ããªããŒã«ã«ããŒã¿ã®ãªã³ã¶ãã©ã€åæãå¯èœã§ãã èšç®çµæã¯è¿ éãã€è¿ éã«ååŸã§ããŸãã
ãŠãŒã¶ãŒã®ããã€ã¹äžã®ã¢ãã«ã®ã¯ã©ãŠãããã®ã¢ã³ããŒãã«ããéçšã³ã¹ãã®åæž ã ãããã¯ãŒã¯åæãµãŒãã¹ãšã¯ã©ã€ã¢ã³ãéã§ããŒã¿ã転éããã³ã¹ããåæžãŸãã¯æé€ããããšã«ãããå€§å¹ ãªç¯çŽãå®çŸã§ããŸãã ã¯ã©ã€ã¢ã³ãåŽã§MLã¢ãã«ãå®è¡ãããšãèŠæ±ãããŒã«ã«ã§åŠçã§ããã¢ãã«ãåãã¬ãŒãã³ã°ããããã®å°ããªæ°ããããŒã¿ããµãŒãã¹ã«éä¿¡ã§ããŸãã
æè»æ§ã éçºè ã¯ãããŒã«ã«ãŸãã¯ã¯ã©ãŠãã§èšç®ãå®è¡ããå Žæãéžæã§ããŸãã ã¯ã©ã€ã¢ã³ãããªã·ãŒã¯ãæ©å¯ããŒã¿ã®ãããã¯ãŒã¯ãžã®éä¿¡ãçŠæ¢ãããããããã¯ãŒã¯ã§ã®èšç®ãå¿ èŠãšããŠçµæãååŸããã®ã«ãããæéãççž®ãããããããšããããŸãã
Windows Machine Learningã®éå§
ãã®ãã¯ãããžãŒã䜿çšããã«ã¯ããœãããŠã§ã¢ãæŽæ°ããå¿ èŠããããŸãã Visual Studio Preview 15.7以éãONWPãã¡ã€ã«ãUWPãããžã§ã¯ãã«è¿œå ãããšãéçºè ãããžã§ã¯ãã«å¿ èŠãªã€ã³ã¿ãŒãã§ã€ã¹ãèªåçã«è¿œå ãããŸãã ããã¯ãã¬ãã¥ãŒã§ãã ããã«ãWindows 10ã®å¿ èŠãªããŒãžã§ã³ã¯ãçŸåšInsider Previewããã°ã©ã ã§ã®ã¿å©çšå¯èœã§ãã Visual Studioã®ä»¥åã®ããŒãžã§ã³ã§ã¯ãéçºè ã¯MLGenããŒã«ã䜿çšããŠé©åãªã€ã³ã¿ãŒãã§ã€ã¹ãäœæããããããããžã§ã¯ãã«æåã§è¿œå ã§ããŸãã ãã®æ©èœã¯ãéããªãAIã®Visual StudioããŒã«ã§å©çšã§ããããã«ãªããŸãã
Windows ML APIããã¥ã¡ã³ãã¯3æ7æ¥ã«å ¬éãããŸããã åœæã2018幎3æã®Windows Developer Dayãéå¬ããããããªã¯YouTubeã®Windows Developerãã£ã³ãã«ã§å ¬éãããŸããã
ãã§ã«æ©æ¢°åŠç¿ã§äœæ¥ããŠãã人ã«ãšã£ãŠãæšæºã©ã€ãã©ãªã®å©ç¹ã¯ç解ã§ããŸãã ãããŠããŸã äž»é¡ã«å«ãŸããŠããªã人ã®ããã«ãã¢ããªã±ãŒã·ã§ã³ã§æ¢è£œã®MLã¢ãã«ã§äœãåŸãããããç°¡åã«èª¬æããŸãã
äžèšã®ããã«ãMLã¢ãã«ã¯é¢æ°ã§ããããã®å ¥åã¯åºå®ïŒãšã³ãã£ãã£ã®ãã©ã¡ãŒã¿ãŒåããã説æïŒãŸãã¯å¯å€é·ïŒãµãŠã³ã/ã¹ãã¯ããã°ã©ã ããããªïŒã®ãã¯ãã«ã§ãããåºåã§ã¯å ¥åãã¯ãã«ãããã€ãã®ã¯ã©ã¹ã«å²ãåœãŠããšè§£éã§ããå¿çãã¯ãã«ãååŸããŸãïŒåé¡ãã¯ã©ã¹ã¿ãªã³ã°ã®åé¡ïŒãããçšåºŠã®å°€åºŠïŒç¢ºçïŒãããã³å ¥åãã¯ãã«ã®ããã€ãã®èšç®ããããã©ã¡ãŒã¿ãŒïŒååž°åé¡ïŒã ããã¯æãåçŽãªå Žåã§ãã ãã®èšäºã®ããè€éãªã¢ããªã±ãŒã·ã§ã³ã¯èæ ®ãããŸããã
äŸãšããŠãMicrosoftã¯ã MNISTã®æåãªäŸãGitHubã«æçš¿ããŸãã ã ã¢ãã«ãããã°ã©ã ã«æ¥ç¶ããã¿ããã¹ã¯ãªãŒã³äžã§æã§æããæ°åãããã«èªèããããšãã§ããŸãã ãã ããAPIææžãèªèã§ã¯ãåæ§ã®æ©èœãããã«è±å¯ã«å®è£ ãããŠããŸãã
GameDevã®äŸã§ãããã®ã¿ã¹ã¯ãæ€èšããŠãã ããã
å ¥åãã¯ãã«ãšããŠãç¹å®ã®ç»åãŸãã¯ç¹å®ã®ç¶æ³ïŒã²ãŒã ïŒã®è¡šçŸããããŸãã ç»åã¯ãäžé£ã®ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãŸãã¯åœŒãèŠããã®ãèšè¿°ããããã«åºã¥ããŠè¡åããŸãã ã¢ãã«ã¯ãŠãŒã¶ãŒã®è¡åãäºæž¬ããããã«åºã¥ããŠæ°ããç°å¢ãèšèšã§ããŸãã
ãã¬ã€ã€ãŒã®ã²ãŒã ã¯ãŒã«ããã«ã¹ã¿ãã€ãºããŠãããå€ãã®ã¿ã¹ã¯ãšããå€ãã®ã®ãããæäŸãã奜ã¿ã«ãã°ããé©å¿ãããããšãã§ããŸãã ãã¬ã€ã€ãŒãã²ãŒã å ã§å®ç©ãèŠã€ããã®ã奜ãã§ãæŠéã«åå ããããªãå Žåãã¢ãã«ã¯å®ç©ãè¿œå ããæŠéã®è€éãã軜æžã§ããŸãã
匷åããã³ã·ãã¥ã¬ãŒã·ã§ã³ãã¬ãŒãã³ã°ã¢ãã«ã¯ãã²ãŒã äœéšã«è²¢ç®ã§ããŸã
ç»åã¯ãããã®ç°å¢ã®èª¬æã§ããããã®ã¢ã¯ã·ã§ã³ã¯ã¢ãã«ã®èšç®çµæã«ãªããŸãã è€éãªã°ã©ãã£ãã¯ã¹ãããšãã°ãææ ã®æç»ããªãŒãã£ãªãã¡ã€ã«ã®æçãªã¢ãŒãã£ãã¥ã¬ãŒã·ã§ã³ãªã©ã§ãã
ããªãé£ããã¿ã¹ã¯ã¯ããã£ã©ã¯ã¿ãŒã®æ足ã®ãã£ãšãããããã€ããã¯ã¹ã誀ã£ãŠèšç®ããããšã§ãã
æšå¹ŽãSIGGRAPH 2017ã§ãæµäœååŠã®çŽæ¥ã·ãã¥ã¬ãŒã·ã§ã³ãè¡ããã«æµäœååŠãèšç®ããããã®MLã¢ãã«ãçºè¡šãããŸãããããã«ãããèšç®éãå€§å¹ ã«åæžãããŸãã
ã€ããžããŒã·ã§ã³ãå«ãããšãã¹ã¿ã€ã«ã転éããããšã§ïŒ Prismaã«äŒŒãïŒãã¯ã¹ãã£ã®ããã·ãŒãžã£ã«çæã«ã¢ãã«ã䜿çšã§ããŸãã åæ§ã«ãã©ã³ãã¹ã±ãŒããã¢ãŒããã¯ãã£ããã®ä»ã®ãšã³ãã£ãã£ãäœæã§ããŸãã
ç§ãèŠãããã«ãMossã²ãŒã ã®ã¡ã€ã³ãã£ã©ã¯ã¿ãŒã«äŒŒãã²ãŒã ãã£ã©ã¯ã¿ãŒã®èšç·Žãããã¢ãã«ïŒãããïŒã®åžå Žã圢æããããšã¯ããªãå¯èœã§ãã ãŸããã¹ã±ã«ãã³/ã·ã§ã«ã®ç²Ÿå·§ãªãã€ããã¯ã¹ã䜿çšããŸãã å ¥åæ¡ä»¶ïŒé床/ç¶æ ãæ§å¥/ã¹ããã座æšãææ ã®ãã¯ãã«ãã¢ã¯ã·ã§ã³/ç®æšïŒãMLã¢ãã«ã®å ¥åã«å ¥åããåºåã§æ¬¡ã®ç¶æ ãååŸãããšããŸãã ãã®ãããªãã¬ãŒã ãããé¢é£ãã3Dã¢ãã¡ãŒã·ã§ã³ãçµã¿ç«ãŠãããšãã§ããŸãã
ããŠã¹ã®åãã®ãã€ããã¯ã¹ãããŒããŒãã®äœ¿çšç¶æ³ã®ãããã¡ã€ã«ãªã©ã«åŸã£ãŠããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãåé¡ããã¢ãã«ãæ§ç¯ã§ããŸãã
äºæ³å€ã®ã¢ãããŒãã¯ãMLã¢ãã«ã䜿çšããŠç»è³ªãæ¹åããããšã§ãã ãè¶ è§£åæè¡ããšåŒã°ãããNVIDIAããã®ãã¹ããŒãããã£ã«ã¿ãªã³ã°ã®äŸãå€æ°ã®èšäºã§æäŸãããŠããŸãã
MLã¹ãŒããŒãµã³ããªã³ã°ïŒå·ŠïŒããã³ãã€ãªãã¢ã¢ãããµã³ããªã³ã°ïŒå³ïŒ
MLã¢ãã«ã®ç¯å²ã¯åºç¯ã§ãããéçºè ã®æ³ååã«ãã£ãŠã®ã¿å¶éãããŸãã ãã®èšäºãæ°ã«å ¥ã£ããã次ã®èšäºã§MLã¢ãã«ã®æ§ç¯ãšäœ¿çšã®åé¡ãç°¡åãªäŸã§èª¬æããŸãã