- 投稿日:2019-08-27T20:34:28+09:00
Bazel を使用して Windows 上で TensorFlow 1.14 をビルドする(CPU版)
確認済みビルド環境
OS: Windows Server 2012 R2
Microsoft Visual C++ 2015 Update3
MSYS2 x64
bazel 0.24.1
Python 3.6.5
MSYS2 のセットアップ
MSYS2のサイト から 64 bit 版の MSYS2 をダウンロードしてインストールを行い、環境変数にパスを追加します。
MSYS2のコマンドプロンプトで
where bashを入力して MSYS2 の bash が最初に表示されることを確認します。出力結果の例
> where bash C:¥msys64¥usr¥bin¥bash.exe C:¥Program Files¥Git¥bin¥bash.exeMSYS2 のアップデートとパッケージの追加
以下のコマンドで MSYS2 のインストール済みのパッケージをアップデートします。
pacman -Syu次に、以下のコマンドで
git,patch,unzipコマンドをインストールします。pacman -Su pacman -S git patch unzipBazel のセットアップ
Bazel はバージョンが変わると互換性がコロッと無くなってしまうので必ずバージョンを確認して
0.24.1をダウンロード・インストールして下さい。(古いのはもちろん、新しくてもダメ)Bazel をダウンロード・展開したら環境変数を追加して
bazel.exeへパスを通しておきます。Python のセットアップ
pip install six numpy wheel pip install keras_applications==1.0.7 --no-deps pip install keras_preprocessing==1.0.9 --no-depsWindows のロングパス名を有効化
gpedit.mscを実行して「ローカルグループポリシーエディタ」を起動します。コンピュータの構成 > 管理者用テンプレート > システム > ファイルシステム を選択し、その中の「Win32の長いパスを有効にする」を「有効」に変更します。
TensorFlow 1.14 のソースコード取得
以下のコマンドで TensorFlow のソースを取得します。
> git clone https://github.com/tensorflow/tensorflow.git > cd tensorflow > git checkout v1.14.0Bazel の設定
上記の
tensorflowディレクトリ内で以下のコマンドを実行して設定を行います。"optimization flags" では "/arch:AVX2" を指定します。CUDA を使用しない場合はその他は全てデフォルトのままで問題ないはずです。> python configure.py設定例
設定値の内容は以下のようになります。Python の PATH は各自の環境に応じて読み替えてください。
項目 設定値 the location of python C:¥ProgramData¥Anaconda3¥envs¥py36¥python.exe Python library paths C:¥ProgramData¥Anaconda3¥envs¥py36¥lib¥site-packages XLA JIT support N ROCm support N CUDA support N optimization flags /arch:AVX2 override eigen strong inline Y ビルド
pip パッケージのビルド
先ず以下のコマンドで
build_pip_package.exeをビルドします。デフォルトだと bazel のビルドは
C:/users/(username)/_bazel_(username)/の下で行われます。この出力先を変えたい場合はbazelコマンドの後(bazelとbuildの間)にオプション--output_user_root=(dirname)で指定を行います。bazel build --config=opt --copt=-nvcc_options=disable-warnings //tensorflow/tools/pip_package:build_pip_package --cpu=x64_windows --compiler=msvc-cl成功すると以下のような出力が得られます。
Target //tensorflow/tools/pip_package:build_pip_package up-to-date: C:/users/(ユーザ名)/_bazel_(ユーザ名)/(ハッシュ値)/execroot/org_tensorflow/bazel-out/x64_windows-opt/bin/tensorflow/tools/pip_package/build_pip_package C:/users/(ユーザ名)/_bazel_(ユーザ名)/(ハッシュ値)/execroot/org_tensorflow/bazel-out/x64_windows-opt/bin/tensorflow/tools/pip_package/build_pip_package.exe INFO: Elapsed time: 1509.342s, Critical Path: 635.56s INFO: 4628 processes: 4628 local. INFO: Build completed successfully, 5234 total actions INFO: Build completed successfully, 5234 total actions次に、
build_pip_package.exeを使用して wheel パッケージを作成します。mkdir ..¥output C:/users/(ユーザ名)/_bazel_(ユーザ名)/(ハッシュ値)/execroot/org_tensorflow/bazel-out/x64_windows-opt/bin/tensorflow/tools/pip_package/build_pip_package.exe ..¥output成功すると指定した
outputディレクトリにtensorflow-1.14.0-cp36-cp36m-win_amd64.whlという名前のファイルが生成されているはずです。tensorflow.dll のビルド
C++ 等から TensorFlow を利用したい場合には以下のコマンドで
tensorflow.dllがビルドできます。bazel build --config=opt --copt=-nvcc_options=disable-warnings //tensorflow:tensorflow.dll --cpu=x64_windows --compiler=msvc-cl成功すると以下のようなメッセージが表示され、表示されているパスに
tensorflow.dllが置かれています。Target //tensorflow:tensorflow.dll up-to-date: C:/users/(ユーザ名)/_bazel_(ユーザ名)/(ハッシュ値)/execroot/org_tensorflow/bazel-out/x64_windows-opt/bin/tensorflow/tensorflow.dll INFO: Elapsed time: 141.033s, Critical Path: 83.40s INFO: 1 process: 1 local. INFO: Build completed successfully, 5 total actions INFO: Build completed successfully, 5 total actions出力先のディレクトリについて
Bazel はデフォルトで
%USERPROFILE%¥_bazel_%USERNAME%に作業フォルダを作成します。これを変更したい場合はコマンドの実行時に引数で--output_user_rootを指定します。例
bazel build --config=opt --copt=-nvcc_options=disable-warnings //tensorflow/tools/pip_package:build_pip_package --cpu=x64_windows --compiler=msvc-clpb -> pbmm 変換ツール
以下のコマンドで pb を pbmm へ変換するツールのビルドができます。
bazel build --config=opt --copt=-nvcc_options=disable-warnings --copt=/arch:AVX --copt=/arch:AVX2 //tensorflow/contrib/util:convert_graphdef_memmapped_format --cpu=x64_windows --compiler=msvc-cl
- 投稿日:2019-08-27T02:33:59+09:00
Coral Devboard を初期キッティングする手順
1.Introduction
本日、 Coral Devboard が手元に届きましたので、早速キッティングしてみます。 公式の手順は少しわかりにくかったですので、日本語でメモがてら作業記録としてココに残します。 奇跡的に全ての必要機材が手元に揃っていましたので、開梱して1時間ほどでキッティングが終わりました。
2.Environment
- Ubuntu 16.04 x86_64
- Type-C 電源アダプタ 5V / 3A
- Type-A to microUSB ケーブル
- Type-A to Type-C USBケーブル
3.Environment setting procedure
ホストPCのターミナルで下記のコマンドを順番に入力します。
$ sudo apt-get install screen $ mkdir -p ~/.local/bin $ wget -O Downloads/platform-tools-latest-linux.zip https://dl.google.com/android/repository/platform-tools-latest-linux.zip $ unzip ~/Downloads/platform-tools*.zip -d Downloads $ sudo mv ~/Downloads/platform-tools/fastboot ~/.local/bin/ $ rm ~/Downloads/platform-tools*.zip $ fastboot --version fastboot version 29.0.2-5738569 Installed as /home/xxxx/.local/bin/fastboot $ sudo apt-get install -y python3-pip $ sudo pip3 install pip --upgrade $ sudo -H pip3 install --user mendel-development-tool次に、Coral Devboard のディップスイッチの向きを確認します。 私の Devboard は最初から下表のように設定されていました。
Boot mode Switch 1 Switch 2 Switch 3 Switch 4 eMMC ON OFF OFF OFF 続いて下記のコマンドを順番に入力します。
$ sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"0525\", MODE=\"0664\", \ GROUP=\"plugdev\", TAG+=\"uaccess\"' >> /etc/udev/rules.d/65-edgetpu-board.rules" $ sudo udevadm control --reload-rules && udevadm trigger続いて、 Type-A to microUSB ケーブルを使用して、 ホストコンピュータのUSBポート と Devboard の microUSBポート を接続します。 microUSBポート付近のLEDが橙色に点灯します。
次に、下記のコマンドを入力して、USBポートが正常に認識されていることを確認します。
$ dmesg | grep ttyUSB [ 5978.379089] usb 1-3: cp210x converter now attached to ttyUSB0 [ 5978.381370] usb 1-3: cp210x converter now attached to ttyUSB1ひとつ前のコマンドで表示された
ttyUSB0に対して、screenコマンドを使用して接続します。$ sudo screen /dev/ttyUSB0 115200すると下図のように真っ黒な画面が表示されます。
次に、Tpye-C 電源ケーブルを接続します。
下記のように入力します。
Ctrl + Cu-boot=> fastboot 0下図の状態で待ち状態になります。
次に、 Type-A to Type-C USBケーブル [Data(OTG)] を Devboard と ホストPC へ接続します。
screenコマンドを使用したターミナルとは別のターミナルをホストコンピュータで起動します。Ctrl + Alt + T
続いて、新しく起動してきたターミナル上で下記のコマンドを実行します。
$ fastboot devices下記のコマンドを実行し、eMMCのフラッシュに必要なリソース一式をダウンロードし、 フラッシュ用スクリプト
flash.shを実行します。$ cd ~/Downloads $ curl -O https://dl.google.com/coral/mendel/enterprise/mendel-enterprise-chef-13.zip $ unzip mendel-enterprise-chef-13.zip && cd mendel-enterprise-chef-13 $ rm ../mendel-enterprise-chef-13.zip $ bash flash.shフラッシュがスタートしますので、ビールでも飲みながら処理が終わるまでしばらくコンソールを眺めます。 5分ほど掛かります。
ログインしてみます。
screenコマンドを入力したターミナルで下記のように入力します。
IDはmendel
Passwordもmendel
です。Mendel GNU/Linux (chef) lime-valet ttymxc0 lime-valet login: mendel Password: mendelWi-Fi 接続環境を整えるため、下記のコマンドを実行します。
$ nmtui
Activate a connectionを選択し、表示されたSSIDのうち、適切なものを選択します。
続いて、Wi-Fiのパスワードを入力します。
うまくいっていれば、これで Wi-Fi によるインターネット接続環境が整います。次に、 Devboard の内部パッケージを最新化します。
$ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | \ sudo tee /etc/apt/sources.list.d/coral-edgetpu.list $ sudo apt-get update $ sudo apt-get dist-upgrade -y最後に、 microUSBケーブルを Devboard から外して終わりです。
4.Finally
次回は、Edge TPU x3 + Devboard TPU x1 の合計4個仕立てで高速推論にチャレンジしてみたいと思います。
- 投稿日:2019-08-27T02:25:14+09:00
End-to-End Machine Learning with TensorFlow on GCPを受講した話
3行で
https://www.coursera.org/learn/end-to-end-ml-tensorflow-gcp?specialization=advanced-machine-learning-tensorflow-gcp
Advanced Machine Learning with TensorFlow on Google Cloud Platform Specializationという一連のコースの1番目
GCPを使った基本的な機械学習プロジェクトの進め方を一通りさらえるどんな人におすすめか
必須
・英語字幕で動画が理解できる
・クラウドサービスと機械学習に興味がある(触ったことがなくてもOK)推奨
・SQLを触った事がある(SELECT, WHERE, GROUP BYの意味ぐらいわかればいい)
・オンプレの計算資源に依存しない機械学習システムを構築したい問題意識がある
・GCPの基本的な機能を使える
(不足を感じたらGoogle Cloud Platform Fundamentals: Core Infrastructureを受講するぐらいで大丈夫そう)不適
・クラウドサービスを完全に理解しているマン
・どうしてもAWSしか使いたくないマン
・機械学習のモデリング部分にしか興味がない人
・機械学習の実際のプロジェクトを何度も回したことがある人どんなコースか
GCPを使った基本的な機械学習プロジェクトの進め方を一通りさらう内容になっています。
公開されてる出産時の妊婦と新生児のデータを使って、出産前に新生児の体重を予測するサービスを構築する仮想のプロジェクトをベースに、
・どんな特徴量をつかうか
・どうやって(ごくごく単純に)モデルを構築するか
・構築したモデルをスケールアウトするには
・機械学習モデルをwebサービスとして提供するには
のような流れになっています。6つ(+1つのオプション)のQwikLab実習があって実際にコードを書きながら学習することができます。
Specializationのあとに続くコースの基礎になっています。
あとに続くコースはより「質の高い」機械学習システムを構築する上で覚えるべきことが続きます。感想など
実習も結構おんぶにだっこ感はあるけど、完全にお膳立てされてるわけでもなく、自分の裁量で考えてすすめる余地のあるものだった点は面白かった。
例えば、どんな特徴量をモデルに入れるべきか探索する実習では、一応お膳立てされた正解はあるものの、自分であれこれの特徴量を試すことができる。
あえて指示から脱線して自由に遊んでみるとより面白いし学べるんじゃないだろうか。
受講者の負担は時間とcourseraの受講料だけで、GCPの利用料が追加でかかるわけじゃないし、実習は何度も再受講可能だしね。機械学習を実際のビジネスとして運用するまでに必要なことのうち、モデリングが占める割合なんてめちゃくちゃ少ないなとは常々思っていたけども、ここまで受講してようやく一通りさらえた感じがある。
コースの実習で使う素材はgithubで公開されているし、自分で機械学習プロジェクトを遂行する際にも大いに参照できる。
https://github.com/GoogleCloudPlatform/training-data-analystクラウドサービスを使うからまあ当たり前だけど、自分で環境構築せずに開発をはじめられるのはめちゃくちゃよい。
環境つくるのって時間の無駄な上に時間食うんだよな・・・。
このコースはGCP上のAI platformでJupyterLabを使って進められる。予めtensorflowを始めとしたパッケージが入ってる環境なので環境構築をすっとばして機械学習に集中できる。これまでTensorFlowってDNNの計算ライブラリだと思ってたんですけど、それだけじゃないんですね。
機械学習のモデリングと、モデリングのすぐ近くにあるところまでカバーされてるんだね。
GCPのDataFlowからデータ受け取るとか、GCPで分散コンピューティングしてもらうとか。次は
Advanced Machine Learning with TensorFlow on Google Cloud Platform Specializationを一通り受講したい。











