概要
第1特集
自分で構築するか,APIで機能を使うか
機械学習の始め方
機械学習を自社の業務やサービスに導入しよう!――そんなとき,大量のデータと機械学習ライブラリを使って,一から学習モデルを構築するしか方法はないのでしょうか?
文字認識や音声認識のような使いまわしのきく機能であれば,ベンダがAPIで提供している学習済みモデルを利用すれば事足りることも多そうです。また,本格導入前に試しに手元のデータを学習させて効果を見極めたいといったケースなら,クラウドサービスとして提供されている機械学習環境を活用すれば,環境の準備に手間取ることなくスピーディに検証できそうです。
機械学習を始めるにしても,その始め方は目的によっていろいろと考えられます。本特集では,その選択肢を示すとともに,各利用形態で必要とされるスキルについても解説します。
第2特集
脱・手順書!
Pythonマイツール作成で仕事効率化
業務の効率化を図るためにIT化したのに,増えていくのは分厚い手順書。近年のシステムは複雑性が増しているので,その分量は等比級数的に増えていくばかりです。膨大なプリントアウト資料に二ツ穴を開けてファイルに挟み込んで,はい終わり……では本末転倒です。
本特集では,手順化を見直し,何が本当の問題なのか探ります。その中で自分用のツールを作りあげることが,その問題解決に大きくつながることを明らかにし,いま人気のPythonで実装を試みます。自分がやりたいことをツールにするとどんな効果があり,どんな良いことがあるのか,さまざまな知見から解説します。本特集でぜひ自分専用のツールを作り,IT業界の働き方改革の突破口を切り拓いてください。
一般記事
社会インフラシステムを支えるLinux その信頼性はどのように維持されているか
Civil Infrastructure Platformプロジェクトの取り組み
表に出ることは少ないですが,電気・ガス・水道・交通・医療などの社会インフラシステムでも,LinuxをはじめとしたOSSが利用されています。社会インフラの信頼性を確保するには,ミリ秒単位の厳密さを意識しなければいけない一方で,10年以上先のことも考慮する必要があります。本稿では,そのような活動に取り組む組織に焦点を当てます。
一般記事
[短期連載]実践! GPUサーバでディープラーニング
【2】ディープラーニングにおける計算資源の重要性
ここ数年,ディープラーニングを用いてさまざまな課題を解決しようとする取り組みが多くあります。ディープラーニングではGPU(Graphics Processing Unit)を用いてモデルを訓練する,ということをご存じの方も多いのではないでしょうか。連載の第2回は「画像生成」を題材に,2つのニューラルネットワークの相互学習を通じて,計算資源としてのGPUの重要性を紹介します。
一般記事
[短期連載]ARKitとUnityで作るiPhone ARアプリ集中特講
【4】猫とのやりとりとUI追加
AppleはiPhoneやiPadでのAR体験をユーザにもたらそうとしています。最新のiOS 11でリリースされた「ARKit」はそのARアプリケーションを開発するためのフレームワークです。この短期連載では,AR空間や物理エンジンの使い方を理解し,シンプルなARゲームを完成させることを目的とします。今回は猫の3Dモデルをもっと愛せるように,なでたり,ごはんをあげたりできるようにしましょう。ゲームとしてのUIにもひと工夫加えます。
サポート
ダウンロード
P.34 「第1特集 第3章 クラウド&GUIですぐに始めよう」
記事で紹介した学習データ(前処理済み)のファイルを,以下からダウンロードできます。このデータ「Numbers3trn.csv」を,Azure Machine Learning Studioにアップロードして学習モデルの構築を試せます。詳細については,記事をご覧ください。
- ダウンロード
- 前処理済みデータ(Numbers3trn.csv)
P.50 「第1特集 第4章 本格的にPythonライブラリを使おう」
記事で紹介したロジスティック回帰による機械学習を試すためのサンプルコードを以下からダウンロードできます。ダウンロードファイル「SoftwareDesing_1804_ML_04.zip」は圧縮ファイルです。解凍したうえでご利用ください。
圧縮ファイル内の「SoftwareDesing_1804_ML_04.ipynb」をGoogle Colaboratoryにアップロードすることで機械学習を試せます。Google Colaboratoryへのアップロード方法は,圧縮ファイル内の「Readme.txt」を参照してください。
- ダウンロード
- サンプルコード(SoftwareDesing_1804_ML_04.zip)
P.92 「短期連載 実践!GPUサーバでディープラーニング【2】」
記事で紹介した画像生成を行うためのサンプルコードとパラメータファイルを以下からダウンロードできます。ダウンロードファイル「code.zip」「easy_gan.zip」「dc_gan1.zip」「dc_gan2.zip」は圧縮ファイルです。解凍したうえでご利用ください。
サンプルコードを実行させるために必要な動作環境,および実行方法の詳細については,記事をご覧ください。
パラメータファイルは,著者が学習させて作成した画像生成モデルのデータです。これを利用すれば自分で学習を行わずに画像生成が可能ですが,ファイルサイズが大きいものもある(最大1.35GB)ため,ダウンロードに時間がかかる場合があります。必要に応じてダウンロードを行ってください。
- ダウンロード
- サンプルコード(code.zip)
- パラメータファイル1(easy_gan.zip)
- パラメータファイル2(dc_gan1.zip)
- パラメータファイル3(dc_gan2.zip)
補足情報
P.148「Unixコマンドライン探検隊 第24回」補足情報
ddの進捗を表示させるための解説で,記事のとおりにコマンドを実行しても,状況によってうまく動作しないことがあります。そのような場合の対処方法を解説します。
記事中,問題が発生する可能性のあるところは図1および図2にある次の箇所です。
(@macos)$ sudo dd if=./2017-09-07-raspbian-stretch-lite.img of=/dev/rdisk5 bs=4m & while sudo kill -SIGINFO $! ; do sleep 5 ; done ← ☆
|
(@linux)$ sudo dd if=2017-09-07-raspbian-stretch-lite.img of=/dev/sdc bs=4M & while sudo kill -SIGUSR1 $! ; do sleep 5 ; done ← umountせずにブロックデバイスにddで書き込む
|
このように実行すると,バックグラウンドにまわしているddコマンドでsudoのパスワード入力を求められるときにジョブがサスペンドされてしまうなど,一連の処理が期待どおりに開始しないことがあります(パスワード入力を求められない状態であれば,この1行で書き込みと進捗表示が切れ目なくできます)。
1. 止まってしまったときの対応
【CASE A. while... が止まってしまった場合】
sudoのパスワードを入力すれば,続く処理も実行されます(もしも適切にパスワードを入力しても処理がされないなら,CASE B.と同様の対応をする)。
$ sudo dd if=./2017-09-07-raspbian-stretch-lite.img of=/dev/rdisk5 bs=4m & while sudo kill -SIGINFO $! ; do sleep 5 ; done
[2] 35624 ← ジョブ=2 なので,while...が一時停止
Password: ← パスワードを入力する
[1] Done sudo dd if=./2017-09-07-raspbian-stretch-lite.img of=/dev/rdisk5 bs=4m
15+0 records in ← 5秒まっていれば,進捗の表示を開始
14+0 records out
58720256 bytes transferred in 5.058929 secs (11607250 bytes/sec)
|
【CASE B. ddが止まってしまった場合】
いったん処理を中止して,再度実施するか,以下に示す「2.」の対応を加えた処理を行います。
$ sudo dd if=./2017-09-07-raspbian-stretch-lite.img of=/dev/sdc bs=4M & while sudo kill -SIGUSR1 $! ; do sleep 5 ; done
[1] 12163 ← ※1
[sudo] password for USER: ← パスワードを入力 ※2
[1]+ Stopped sudo dd if= (... 略 ...) ← ddがサスペンド(Stopped)
^C ← Control-Cを入力
$ sudo kill -9 12163 ← ※1のプロセスID(12163)に対してSIGKILLを送って,処理を中断
[1]+ Killed sudo dd if= (... 略 ...)
|
※1のようにPIDを見つけることができない場合,停止すべきddプロセスのPIDを確認するには,
を実施し,「sudo dd ...」というプロセスのPIDを探して,そのPIDを「kill -9」してください。
この直後に再び同じ処理を実施すれば,※2でsudoの認証がすでになされているので,パスワード入力は求められません。
2. 上記の状態を避ける施策
そもそも,sudoのパスワード要求による混乱を避けるには,以下のいずれかのような対応が有効です。
【施策 a. 事前に一度sudoを実行してからddする】
sudoの認証情報はデフォルトで5分間保持されているので,事前にsudoしておけば,直後のコマンドは認証を必要としません。続く例は,事前にsleep 0をsudoで実行して回避する方法です。
$ sudo sleep 0 ; sudo dd if=./2017-09-07-raspbian-stretch-lite.img of=/dev/rdisk5 bs=4m & while sudo kill -SIGINFO $! ; do sleep 5 ; done
Password: ← パスワードを入力する
[2]+ Done sudo dd if= (... 略 ...)
[1] 36738
15+0 records in
14+0 records out
|
【施策 b. ddの実行とwhileによるkillコマンドのループを別に処理する】
$ sudo dd if=./2017-09-07-raspbian-stretch-lite.img of=/dev/rdisk5 bs=4m
Password: ← パスワードを入力する
^Z ← Control-Zでddをサスペンド
$ bg ← 手動でバックグランドに回す
$ while sudo kill -SIGINFO $! ; do sleep 5 ; done
|
【施策 c. 「sudo -s」などで,管理者として実行する】
$ sudo -s
Password: ← パスワードを入力する
# dd if=./2017-09-07-raspbian-stretch-lite.img of=/dev/rdisk5 bs=4m & while kill -SIGINFO $! ; do sleep 5 ; done ← 管理者権限で実行
|
【施策 d. ddとシグナルの送信を別の端末から実施する】
端末を2つ開いて,1つでddによる書き込み処理を実施(このとき,ddはフォアグラウンドのままでよい)。ddプロセスのPIDを取得したら,もう1つの端末からシグナルを送ります。