[AI] GPGPU CUDAプログラミングを15分でさらり!ディープラーニングを 15分でさらり [初心者]

この記事でわかること

マット
マット

こんにちは、マットです。今回は質問が多いGPUとCPUのプログラミングの違いと性能をさくっと15分で紹介!

対象:C言語,CUDA,GPGPU初心者 グラフィックスボードに興味あり

必要機材:NVIDIA グラフィックスボード

まずはじめにCPUとGPUの違いとは?簡単にはこんな感じです。

画像1

Graphics Processing Unit(グラフィックス プロセッシング ユニット) 
コンピュータシステムにおいて、画像表示を担当するASICであるグラフィックコントローラが発展したもので、ジオメトリエンジンなどの専用ハードウェアによって画像処理を行う集積回路を指す。
身近なところでは、PCに接続されるグラフィックカードGeforce/RadeonがGPUと呼ばれる。
CUDA:NVIDIAが提唱する、GPGPU向けのC言語。ほぼC言語と一緒。拡張子*.cu。
ジオメトリエンジン(Geometric Engine): 物体を3D CGで表現する際、頂点座標などのデータを下にPC内仮想3次元空間へ作成します。作成後、モニタへ描画する際、3次元から2次元へ座標変換するこの処理(3次元から2次元への変換)はジオメトリ処理と呼ばれ、膨大な浮動小数点演算が必要。GPUのグラフィックス処理能力は半導体技術の進歩と共に向上し、現在では、毎秒500億テクセル以上の処理能力。
テクセル: 3次元グラフィックスで、物体の表面の質感を表現するためのテクスチャを構成するひとつの点。 2次元グラフィックスにおけるピクセルの3次元版
FLOPS: コンピュータの処理速度を表す単位。一秒間に浮動少数演算が行える回数。
シェーダ:GPU内に複数個搭載されている小型マルチプロセッサ
(ピクセルシェーダ・頂点シェーダ等)
統合シェーダ(ストリームプロセッサ): 従来のシェーダは機能別に分かれていましたが、CUDA対応GPUとなり、機能別シェーダを廃止し、全てのシェーダが同一の機能を持つシェーダとなった。

Neural Network Console でサインイン

マット
マット

ここで嫌にならないでくださいね….

C言語とCUDA言語の違い

マット
マット

GPGPUの代表格、CUDAプログラミングをC言語との違いで見てみよう。ほぼ一緒。怖くない。

void hello_c(){
   printf("Hello World! from C言語\n");
}
int main() {
   hello_c();
   return 0;
}
__global__ void hello_cuda(){
   printf("Hello World from CUDA言語!\n");
}
int main() {
   hello_cuda<<<1,1>>>(); 
   return 0;
}

「__global__」はGPU呼び出し。「<<<…>>>」は魔法の記号だよ。大した話ではないので、暗記の必要は無いよ。

GPUとCPUプログラミングの違い

マット
マット

早速GPU性能を見て行くよ。プログラミングの違いやGPUの処理フローをみて理解しよう、さっくり。GPU処理はホスト(パソコン)側のCPUが必ず必要になります。下図ではCPUからGPUへ演算を行う処理フローを示すよ。

画像2
マット
マット

では早速性能を計りましょう。

画像3
画像4

以下の結果では、GPUが圧倒的な速度だね。

画像5
画像8

メモリコピー

ワープ!

画像18

CUDAプログラミングでスレッドとは、ワープ単位である32スレッドが同一命令を実行するよ。だからディープラーニングやニューラルネットワークで重み行列演算(掛け算と足し算の繰り返し)などの並列処理が速いんだね。

その時に「if」ワープダイバージェンスが起こると、プログラミングのいわゆる「if分岐」が起こるよ。分岐って名前の通り立ち止まり考えて、それぞれA/BとX/Yで違う処理が行われるね。そして最後に「z」また再会。この処理は並列処理では常にボトルネックになるね。CUDAプログラミングでは気を付けよう。

画像10
画像11
画像12

パフォーマンスをチューニングしよう

画像13
画像14

CUDライブラリ

GPGPUの代表格CUDAには、いろいろなライブラリ(便利な機能)があるよ。もちろんPython向けライブラリもあるよ。

画像16

まとめ

画像17
[PR]みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習

自分にあった機械学習の学び方

AIの入門コースと書籍一覧

初心者には、独学で難しい機械学習本を1ページ目から読み始めるのはおすすめしないよ!マットがおすすめするのは、オンラインで効率よくビデオや凝縮されたテキストでコースをざっと理解する事。ひとはだれでも、一緒に学ぶと理解が進みモチベーションが保ちやすよね。こちらのコースを学んだあとに、おすすめ書籍を参考書として使ってね!
マットのおすすめのオンラインコースは、Udemyなどのオンラインスクールがおすすめ。もちろん一人で、Python入門から始まり、統計数学・シグモイド関数、ニューラルネットワークを進めてよいけど、結構大変。
今なら¥15,000円から¥24,000くらい厄13~28時間ビデオ、たくさんの記事、サンプルソース、期間制限なしで学べるよ。

まずおすすめその1は、次の順番だよ。まずはマストアイテム”Python“ヘビ!だね。このスクリプト言語は非常にシンプルで、C++やJavaと比較してもプログラミング行数が圧倒的に少なく、簡潔にかけるよ。

次におすすめその2は、Pythonを使った機械学習の入門編だね。

最後のおすすめはその3は、

おすすめ その1 -Python3 入門+応用-

応用では、データ解析データーベースネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です!
14577件のいいね評価で、¥24,000円で28.5時間ビデオ、10つの記事、期間制限なしで学べるよ。

学習内容

  • Python3の基本の習得できます。
  • 応用編の講義もありますので、簡単なアプリケーション開発に必要なスキルを習得できます。
  • Pythonicなコードのスタイルを身に付けることができます。

このコースでは、Python3の基礎である入門コースを一通り終えた後に、今後のアプリケーション開発に役立つためのPythonのテクニックやデーターベースアクセス(SQLite, MySQL, MongoDB, SQLAlchemy, memcached, Hbase, neo4j etc)、WEB(Flask, socket, RPC etc)、インフラ自動化(Fabric, Ansible)、並列化(スレッド、マルチプロセス)、テスト(Unittest, pytest, Tox, Selenium, etc)、暗号化(pycrypto, hashlib)、グラフィック(turtle, Tkinter)、データ解析(numpy, pandas, matplotlib, scikit-learn), キューイングシステム(ZeroMQ, Celery)、非同期処理(asyncio)などのPythonを使った応用編を取り入れているよ!

おすすめ その2 -ゼロからのPythonで学ぶ人工知能と機械学習-

このおすすめでは、Udemyなどのオンラインスクールの、Pythonで学ぶ人工知能と機械学習が推し! ひとりで統計数学・シグモイド関数、ニューラルネットワークを進めてよいけど、結構大変。そんな君には、今なら¥15,000円で13時間ビデオ、7つの記事、6個のサンプルソース、期間制限なしで学べるこのコースがおすすめ!

学習内容
このコースで学べるのは、

  • 簡単な機械学習のコードを書けるようになります。
  • Pythonの基礎的なプログラミング技術が身につきます。
  • ビジネス上必要な人工知能の基礎知識が身につきます。
  • 有名な機械学習ライブラリが扱えるようになります。
  • 機械学習と関連した簡単な数学の知識が身につきます。
  • 人工知能全般についての知識が身につきます。

おすすめ その3 -ゼロからのおさらい 統計基礎-

このおすすめは、Udemyなどのオンラインスクールがおすすめ。もちろん一人で、Python入門から始まり、統計数学・シグモイド関数、ニューラルネットワークを進めてよいけど、結構大変。
今なら¥10,200円で2.5時間ビデオ、1つのダウンロード可能なリソース、期間制限なしで学べるよ。

学習内容
初心者向けで機械学習に必須の統計を一気に復習するコースです。プログラミング言語Python以外にも、機械学習で頻出するキーワードが統計です。プログラミングの基礎以外にも必要な数学を勉強しましょう!
 (3.5)

学習内容
このコースで学べるのは、何となく分析をしているけれど、これで本当に合っているのだろうか…?

部下の持ってきたデータをそのまま信じていいものか。経営判断がしづらい…。

そんな悩みを持つかたにぜひおすすめしたい、統計学の入門講座です。

数学が苦手でも大丈夫。統計学の基礎をゼロから身につけていきます。

エクセルを使った練習問題で、明日から使える分析手法を身につけましょう。

  • 統計学の考え方をもとに正しいアプローチでデータを分析し、意思決定に寄与できるようになります。

おまけ

機械学習を学ぶには、Google Colaboratoryに代表される開発ツール以外にも、さまざまな環境、言語(python,C++,Java)になれたほうがよいよ。下の図はAIで使われている言語、データベース、ツールなどだよ。

おすすめ3選を紹介Fire HDならオンラインスクールの受講も、カフェ、ベッド、公園、そして通勤中でも自由!もちろん音楽を聴いたり、ネットフリックスやブラウザで調べものOK!

  • 【8インチから10.1インチの大画面】1080pフルHD、224ppi解像度の鮮やかなディスプレイ
  • 【最大12時間の長稼働バッテリー】USB-C(2.0)接続で充電も簡単
  • 【3から4GB RAM】オクタコアプロセッサ搭載
  • ワイヤレス充電】ワイヤレス充電スタンド(別売)を使えば、タブレットをShowモードで充電しながらAlexaを使ってハンズフリーでタブレットを使用することができます。
  • 2画面表示機能】ショッピングをしながらメール確認などの二つのアプリが同時操作可能
  • HDビデオ通話】AlexaアプリやZoomアプリをお持ちの友人や家族と高画質でビデオ通話が可能
  • Alexa搭載】Alexaに話しかけるだけで動画、音楽、Alexa対応家電など簡単操作
  • エンターテイメント】NetflixやDAZNなどの人気のアプリに加えて、映画やドラマ、音楽や電子書籍まで数千万を超える様々なコンテンツもこの一台で
[PR]年収UP率93.8% / 平均年収UP額126万円のエンジニア転職サイト【転職ドラフト】

初心者向け 用語集

AI用語集 – 初心者の方向け

ニュースでよく聞く、難しい言葉やAI用語を整理するよ。

人工知能(AI)
一般的に、AIとは、人間のように働き、反応する知的な機械を作ることに重点を置いたコンピュータサイエンスの分野です。AIを、人間が行う際に知能を必要とすることを可能にする機械を構築することを目的とした、コンピュータサイエンスの多くの技術要素をまとめた幅広い用語。これらの分野には、次に説明する機械学習深層学習コンピュータ・ビジョン自然言語・音声処理コグニティブ・コンピューティングロボティック・プロセス・オートメーション(RPA)などがあります。

機械学習
機械学習とは、コンピュータシステムが、プログラムされた特定の指示に従わなくても、データに触れることでパフォーマンスを向上させる能力のこと。言い換えれば、機械学習とは、大量のデータの中から自動的にパターンを見つけ出し、それをもとに予測やより良い情報に基づいた意思決定を行うプロセスのことだよ。

ディープラーニング(深層学習)
ディープラーニングは比較的新しい強力な技術で、ある層からの出力が次の層の入力となるようなディープニューラルネットワークで情報を処理するアルゴリズム群を含むよ。”深層学習アルゴリズムは、がん細胞の検出や病気の予測などで大きな成果を上げているよ。

コンピュータビジョン
画像を扱いやすいように分析し、画像内の物体のエッジやテクスチャーを検出し、他の既知の物体と比較して分類する技術を用いて、写真内の物体、シーン、活動を識別するコンピュータが持つ能力のこと。基本的には、コンピュータビジョンは、画像や多次元データから情報を得る人工的なシステムを構築するための理論と技術だね。
自然言語/音声処理。人間と同じようにテキストや言語を扱うことができる能力のこと。
事例:テスラモーターズの自動運転。ナンバー読み込み。アマゾンの無人倉庫向け運搬ロボット。アップル社のSiri。

コグニティブ・コンピューティング
IBM社が提唱するコグニティブ・コンピューティングは、認知科学の知識を応用して、機械学習、自然言語処理、視覚、人間とコンピューターのインタラクションなど、複数のAI手法をまとめてアーキテクチャを構築し、人間の思考プロセスをシミュレートすることで、複雑な状況下でより良い意思決定を行うことを目的としています。コグニティブ・コンピューティングの目的は、人間に代わって意思決定を行うのではなく、人間がより良い意思決定を行えるように作られているよ。

事例:IBMワトソン(コンピュータ)を活用した例。自動受け答え機能。知識検索など。


IBM出典:IBM

ロボティック・プロセス・オートメーション(RPA)
RPAは、ビジネスオートメーションにおける有望な新展開であり、2018年に非常に人気が高またね。IBMはこれを、プロセスやビジネス上の意思決定の自動化、データ取得の取り組みなど、より広範な自動化の取り組みと容易に統合し、自動化プログラムの価値を拡大できるソフトウェアと定義しているよ。
RPAは、トランザクションの処理、データの操作、応答のトリガー、他のデジタルシステムとの通信など、既存のビジネス・プロセス・マネジメント(BPM)アプリケーションを自動的に取り込み、解釈するように構成されているよ。エンタープライズ・オートメーション・ツール(BPMなど)との主な違いは、RPAが人間のオペレーターではなく、ソフトウェアや認知ロボットを使ってプロセス操作を行い、最適化するよ。
RPAとAIの違いを一言で表すと、「自己学習能力」の有無だね。AIには自己学習機能があるけど、RPAはあくまで指示通り(プログラム)に忠実に動くよ。
事例:三菱UFJによる、事務処理自動化(200業務)で9500人分削減。

AI用語集 -ディープラーニングの4つの手法-

DNNは、ディープラーニングでよく用いられる4つの手法のひとつだよ。

人工知能(AI)
一般的に、AIとは、人間のように働き、反応する知的な機械を作ることに重点を置いたコンピュータサイエンスの分野です。AIを、人間が行う際に知能を必要とすることを可能にする機械を構築することを目的とした、コンピュータサイエンスの多くの技術要素をまとめた幅広い用語。これらの分野には、次に説明する機械学習深層学習コンピュータ・ビジョン自然言語・音声処理コグニティブ・コンピューティングロボティック・プロセス・オートメーション(RPA)などがあります。

機械学習
機械学習とは、コンピュータシステムが、プログラムされた特定の指示に従わなくても、データに触れることでパフォーマンスを向上させる能力のこと。言い換えれば、機械学習とは、大量のデータの中から自動的にパターンを見つけ出し、それをもとに予測やより良い情報に基づいた意思決定を行うプロセスのことだよ。

ディープラーニング(深層学習)
ディープラーニングは比較的新しい強力な技術で、ある層からの出力が次の層の入力となるようなディープニューラルネットワークで情報を処理するアルゴリズム群を含むよ。”深層学習アルゴリズムは、がん細胞の検出や病気の予測などで大きな成果を上げているよ。

コンピュータビジョン
画像を扱いやすいように分析し、画像内の物体のエッジやテクスチャーを検出し、他の既知の物体と比較して分類する技術を用いて、写真内の物体、シーン、活動を識別するコンピュータが持つ能力のこと。基本的には、コンピュータビジョンは、画像や多次元データから情報を得る人工的なシステムを構築するための理論と技術だね。
自然言語/音声処理。人間と同じようにテキストや言語を扱うことができる能力のこと。
事例:テスラモーターズの自動運転。ナンバー読み込み。アマゾンの無人倉庫向け運搬ロボット。アップル社のSiri。

コグニティブ・コンピューティング
IBM社が提唱するコグニティブ・コンピューティングは、認知科学の知識を応用して、機械学習、自然言語処理、視覚、人間とコンピューターのインタラクションなど、複数のAI手法をまとめてアーキテクチャを構築し、人間の思考プロセスをシミュレートすることで、複雑な状況下でより良い意思決定を行うことを目的としています。コグニティブ・コンピューティングの目的は、人間に代わって意思決定を行うのではなく、人間がより良い意思決定を行えるように作られているよ。

事例:IBMワトソン(コンピュータ)を活用した例。自動受け答え機能。知識検索など。


IBM出典:IBM

ロボティック・プロセス・オートメーション(RPA)
RPAは、ビジネスオートメーションにおける有望な新展開であり、2018年に非常に人気が高またね。IBMはこれを、プロセスやビジネス上の意思決定の自動化、データ取得の取り組みなど、より広範な自動化の取り組みと容易に統合し、自動化プログラムの価値を拡大できるソフトウェアと定義しているよ。
RPAは、トランザクションの処理、データの操作、応答のトリガー、他のデジタルシステムとの通信など、既存のビジネス・プロセス・マネジメント(BPM)アプリケーションを自動的に取り込み、解釈するように構成されているよ。エンタープライズ・オートメーション・ツール(BPMなど)との主な違いは、RPAが人間のオペレーターではなく、ソフトウェアや認知ロボットを使ってプロセス操作を行い、最適化するよ。
RPAとAIの違いを一言で表すと、「自己学習能力」の有無だね。AIには自己学習機能があるけど、RPAはあくまで指示通り(プログラム)に忠実に動くよ。
事例:三菱UFJによる、事務処理自動化(200業務)で9500人分削減。