かれ4

かれこれ4個目のブログ

Mac上でCNTK改めCognitive ToolKitを使うならDockerが1番楽ちんそう

結論

Mac上でCNTK改めCognitive Toolkitを使おうとコンパイルを試みたけれど、ネイティブでは無理だった。 無理じゃないかもしれないけれど、労力ががが 結局Dockerでやるのが楽ちん。

なぜ??

github.com

ここにも有るようにACMLがLinuxWindowsにしか提供されていないからだと言う。 他のオープンソースのライブラリで代用しないか?という質問に対しても しかも当面はWindowsLinux以外はサポートしないとはっきりと書かれている。

ACMLとは?

AMD Core Math Libraryの事。 developer.amd.com

  • Level 1, 2 and 3 BLAS
  • LAPACK の全ルーチン
  • FFT(単精度、倍精度)
  • 乱数生成(単精度、倍精度) が高速に扱えるライブラリ。

ただ、現在サイトを見てみると終了のお知らせがあり、これからはオープンソースでやっていくから gpuopen.comを見てねと オープンソースになったので、Mac用にビルドするとか出来るようになるでしょう

とりあえず、ACMLはここまでにしてMacでなんとかCNTK

もうMacでもなんでもない。Dockerで

DockerでCNTKを使う方法は公式のWikiにも書いてある。

CNTK Docker Containers · Microsoft/CNTK Wiki · GitHub

ここに書かれている通りに

cd ${REPO_ROOT}/CNTK/Tools/docker
docker build -t cntk CNTK-CPUOnly-Image

こんな感じでbuildすればとりあえず、MacでもなんでもCognitive ToolKitは試せる ただ、buildにMacbook Air 2014 で大体8時間位かかるので、 ビルド中は美術館なんかに行くのが良いと思う。

ちなみに

$ docker search cntk
NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
torumakabe/cntk-cpu       Image built by MS CNTK Dcokerfile (CPU)         1
microsoft/cntk            CNTK                                            1                    [OK]
attz/cntk                                                                 0
xmedicus/cntk             CNTK                                            0
smizy/cntk                Based on torumakabe/cntk-cpu, MNIST data p...   0
xiw9/cntk                 Another CNTK docker image                       0
qianjun22/cntk-gpu        Docker Image built from the official MS CN...   0
alfpark/cntk              Microsoft Cognitive Toolkit (CNTK) with 1-...   0
toyotaka/cntk                                                             0
tottokug/cntk-cpuonly                                                     0
incognition/cntk-devel                                                    0
nefrock/docker-cntk-cpu                                                   0
nefrock/docker-cntk-gpu                                                   0
incognition/cntkcuda8                                                     0
ericebert/cntk_gpu                                                        0

と、野良のcntkのDocker Imageが出て来る。 その中に一つ異彩を放つ一行がこちら microsoft/cntk なんか公式っぽいTagが付いているImageがある、 しかしdocker hubに行ってみると、

https://hub.docker.com/r/microsoft/cntk/tags/

キチンと公式っぽいものが用意されていた。 RepoInfoのショボさはこの際は気にしない。

$ docker run  -it --rm microsoft/cntk:1.7.2-cpu-only /bin/bash
root@de3948185514:/cntk# cntk
-------------------------------------------------------------------
Build info:

        Built time: Oct  1 2016 21:16:06
        Last modified date: Sat Oct  1 21:14:58 2016
        Build type: release
        Build target: CPU-only
        With 1bit-SGD: no
        Math lib: mkl
        Build Branch: HEAD
        Build SHA1: d1ad5fcc9b71c9b6122623a2a0c3d126a64cbe94
        Built by philly on 9b019bb2e014
        Build Path: /home/philly/jenkins/workspace/CNTK-Build-Linux
-------------------------------------------------------------------
No command-line argument given.
-------------------------------------------------------------------
Usage: cntk configFile=yourConfigFile
For detailed information please consult the CNTK book
"An Introduction to Computational Networks and the Computational Network Toolkit"
-------------------------------------------------------------------

とりあえず、これでよいか。

Mac上でcntkを試す程度であれば、これが1番楽ちんそうだなと思いました。