これまでAIがコードをすべて書いてくれたものの、
実際にどのように動作しているのか、もどかしく感じていませんでしたか?
AIの時代には、AIに振り回されるのではなく、AIに正確な作業指示を出し、管理し、オーケストレーションする人が必要です。そうした人はAIに取って代わられることはありません。
AIコーディングをされている方も、就職や転職を準備されている方も、この講座でそのスキルを身につけていただければと思います。
この世界で最も簡単に理解できるように作られたGPUの原理と、それに必要なCS知識を盛り込みました。大学でも学べず、実務でも学ぶことのできなかったことをお教えします。
AIによりうまく仕事をさせられるようにします。
このコースでは、GPUがコードを実際にどのように実行するのかを学びます。スレッドがどのようにまとまって動くのか、値がどこに置かれるかによって、なぜ処理時間が数十倍も変わるのかを、原理から説明します。そして、その原理を言葉だけで終わらせないよう、100万件のドキュメントから最も似ている5件を見つけるベクトル検索を題材に、CPUの場合とGPUの場合、最適化した場合で何がどのように変わるのかを画面上でお見せします。その過程で、キャッシュ、スレッド、同期、浮動小数点などのCS知識も併せてお伝えします。大学でも現場でも学べなかったことをお教えします。
コードはAIが書きます。皆さんがすることは、そのコードがどのように動作するのかを理解し、それによって他の人よりも短い時間で、より高性能な機能やサービスを開発できるようになることです。
RTX 4090で測定
| CPU類似度計算 | 558.83 ms |
| GPU初のカーネル | 11.736 ms 47.6倍 |
| GPU最適化カーネル | 3.237 ms 約173倍 |
このような方におすすめです。
AIで開発する大学生
AIで作ることはできるけれど、コンピューターがそのコードをどのように実行するのかは知らない方
授業でもサークルでも一人で作ったプロジェクトでも、AIがコードを書いてくれます。しかし、面接や発表で問われるのは成果物ではなく理解度です。「なぜこのように実装したのですか」「CPUとGPUにはどのような違いがありますか」「メモリアクセスの方式がなぜパフォーマンスに影響するのですか」と聞かれて言葉に詰まったことがあるなら、今足りないのはプロジェクトの数ではなく、自分が作ったシステムを説明できる状態です。
ジュニア開発者
AIが機能はすぐに作ってくれるものの、性能改善をどうすればいいのか分からない開発者
AIを使えば機能はすぐに作れます。問題はその後です。コードが遅くなったり、メモリ使用量が増えたり、トラフィックが集中したりしたら、改善しなければなりません。AIはいくつもの解決策を提示しますが、どれが正しいかを選ぶのは、結局自分自身の役目です。この判断基準がなければ、経験を積んでも問題を解決する力はなかなか身につきません。
AIエンジニア
AIに正確なプロンプトを与え、競合他社よりも速く、より高性能なものを作らなければならない方
AIに"速くして"とだけ言うと、返ってきたコードがなぜそうなっているのか分からないまま、あれこれ変更して時間を費やします。原理を知っていれば、最初から正確に指示できます。"このカーネルのメモリアクセスが結合されているか確認して"、"今のボトルネックが計算なのかメモリなのか、まず判断して"のように言うのです。そうすれば試行錯誤に何日も費やすことなく、一度で性能の出るコードを受け取れます。競合他社より早くリリースできるかどうかの差は、ここで生まれます。
受講後は
- AIに依頼できる作業のレベルが上がります。 "GPUで高速化して"で終わらず、"このカーネルのMemory Coalescingが適切に行われているか確認して"、"Occupancyが低い原因がレジスタなのかshared memoryなのか分析して"と依頼し、返ってきた回答を検証できるようになります。
- CSの基礎が身につくため、今後どのような講義を受けてもすべて理解できるようになります。配列と連続メモリ、ヒープ、ソート、計算量、キャッシュとメモリ階層、レイテンシの隠蔽、スレッドとスケジューリング、同期と競合状態、浮動小数点誤差なども簡単に理解できるようになります。
- 面接や発表で"なぜこのように実装したのですか"という問いに、根拠を示して答えられます。 最初のページで原理に関する質問20問を受け、答えられない状態として記録しておき、最後のページですべての質問に答えられるようにします。そのまま面接の回答になる形で残ります。
- "どの部分がどれだけ速くなったかと言えるようになります。カーネル時間をGPUクロックで正確に測定し、達成帯域幅を計算して理論上限と比較し、プロファイラーが使えない状況で何を代わりに判断材料とするかまで扱います。
- パフォーマンスが出ないときにどこを見るべきかがわかります。計算がボトルネックなのか、メモリがボトルネックなのかを見分ける基準が身につきます。
この講義の特徴
主な強み(1)
このように原理を理解しやすくまとめた講義はありません。
GPUを説明する資料は数多くあります。しかし、そのほとんどは用語で用語を説明します。 "ワープは32個のスレッドのまとまりであり、SIMTで実行される"という文を読んでも、知っている単語が一つ増えるだけで、イメージが浮かびません。
この講義は定義から始めません。まず問いかけます。これを知らなければ何を判断できないのか。ワープを知らなければブロックサイズをなぜ32の倍数に設定するのか選べず、メモリ階層を知らなければ遅いコードを前にどこから調べればよいのかわかりません。その途方に暮れる感覚をまず作ったうえで正確な定義を示し、最後に100万件のドキュメント検索コードの中で、それが実際に起きている場面を見せます。
用語は最初に登場する箇所で定義し、英語の原語も併記します。配列、ポインタ、時間計算量、キャッシュのように、「これは知っているだろう」と流してしまいがちなものも同様です。知っている方にとっては一行で通り過ぎる文章でも、知らない方にとっては、その一行が講義を最後まで受講できるようにする橋なのです。
主な強み(2)
実習コードをそのままお渡しし、実際の原理どおりに動作することをお見せします。
説明だけで終わりません。実習プログラム15個の全ソースとMakefileを提供します。cpu_search、hello_kernel、index_check、device_info、warp_waste、divergence、spill、gpu_search、timing、sync_experiment、reduction、coalesced、stride、bandwidth、occupancy。それぞれ、一つの原理を測定するために作られたプログラムです。
講義では、これらのプログラムをビルドして実行する画面をそのままお見せします。コマンド1行、出力1行も飛ばしません。そのため、実習環境を用意せずに講義を見るだけでも「原理どおりに出力されるんだ」と目で確認でき、実際に動かしてみたい場合は同じコードをそのまま使えます。
このような内容を学びます
全47講が一つの流れとしてつながっています。CPUとGPUがなぜ異なる設計になっているのかから始め、スレッドがどのようにまとめられて動くのか、値がどこに置かれるかがなぜ処理時間を決めるのかまで、原理を順番に一つずつ見ていきます。その原理が実際にどのように動作するのかを、100万件の文書を検索するプログラムで確認します。
そのため、順番どおりに受講することをおすすめします。前の講義で確認した数値が、後の講義で性能改善の判断基準になるためです。GPUの原理とCSの知識も、別々に分けて学ぶことはありません。必要なときに、その場ですぐにご説明します。
SECTION 1 · 1~5講
なぜ今、GPUの原理とCSの知識なのか
AIがコードを書いてくれる時代に、なぜ原理を知る必要があるのかから押さえます。この講座で何を得られるのかをまず確認し、実習環境を準備します。実習環境は飛ばしても、講義についていくうえで支障はありません。
- 1AI時代にGPUの原理とCS知識が必要な理由 (1)
- 2AI時代にGPUの原理とCS知識が必要な理由(2)
- 3AI時代にGPUの原理とCS知識が必要な理由 (3)
- 4このコースで身につけること
- 5実習環境 — スキップしても構いません
セクション2 · 6~11講
CPUとGPUは何が異なるのか
「GPUはコアが多いから速い」だけでは、GPUのほうがかえって遅くなる場合を説明できません。2つのデバイスが同じトランジスター予算をどこに使ったのかを見ます。面接で実際に出される質問を、CPU側とGPU側に分けて個別に扱います。
- 6CPUとGPUの設計の違い (1)
- 7CPUとGPUの設計の違い (2) — 小学生でも理解できるレベル
- 8CPUとGPUの設計の違い(3)— CPU面接の質問
- 9CPUとGPUの設計の違い(4) — GPU面接質問
- 10CPUとGPUの設計の違い (5) — 3つの計算方法
- 11CPUとGPUの設計の違い (6)
セクション3 · 12~21講
CSの基礎を築き、CPUで基準を作る
ベクトルをなぜ使うのか、GPUメモリがどれくらいあるのか、スレッドとメモリがどのような関係にあるのかを確認します。次に、内積・ノルム・コサイン類似度を手計算で確かめ、ソートとヒープデータ構造を経て、CPUでまず実装して基準時間を手に入れます。この値が後に出てくるすべての倍率の分母になります。
- 12CS知識 — ベクトルをなぜ使うのか
- 13CS知識 — GPUのメモリサイズ
- 14CS知識 — GPUスレッドとメモリ
- 15GPUサーバーで実測する
- 16CS知識 — 内積、ノルム、コサイン類似度 (1)
- 17CS知識 — 内積、ノルム、コサイン類似度 (2)
- 18CPUでベクトル検索が遅い理由
- 19CS知識 — 全体ソートアルゴリズム
- 20CS知識 — 部分ソートアルゴリズムとHeapデータ構造
- 21CPUで測定する
SECTION 4 · 22~32講
GPUはどのようにコードを実行するのか
GPUが得意なことと不得意なことを分けたうえで、CPUとGPUがどのように協働するのかを見ていきます。カーネルとは何かを定義し、実際に計測した後、スレッドから始めてGPU内部の動作を5講にわたって掘り下げます。
- 22GPUが得意なこと
- 23GPUが苦手なこと
- 24CS知識 — CPUとGPUはどのように連携するのか
- 25GPUのカーネルとは
- 26カーネルを実測する
- 27GPUのスレッド
- 28GPUの原理(1)
- 29GPUの原理(2)
- 30GPUの原理(3)
- 31GPUの原理(4)
- 32GPUの原理(5)
SECTION 5 · 33〜42講義
メモリを知らなければ性能は見えない
値がどこに存在するかが、時間を決めます。メモリ階層を3講にわたって学び、CPUとGPU間のデータ移動を扱います。カーネルだけ速くなっても意味がない理由がここで明らかになります。時間を正確に測る方法とメモリ最適化、さらに同期・競合状態・浮動小数点まで続きます。
- 33GPUのメモリ階層 (1)
- 34GPUのメモリ階層 (2)
- 35GPUのメモリ階層 (3)
- 36CPU-GPU双方のデータ移動の原理(1)
- 37CPU-GPU双方のデータ移動の原理(2)
- 38CPU-GPUを最適化する — メモリ常駐
- 39パフォーマンス測定 — 時間を計る
- 40GPUメモリを最適化する
- 41CS知識 — 同期とRace Condition
- 42CS知識 — リダクションと浮動小数点
SECTION 6 · 43~47講義
測定して判断できる人になる
残りのGPUの原理を引き続き扱い、占有率とプロファイリングツールでパフォーマンスを判断する方法を学びます。就職や転職、実際のプロジェクトで何を根拠として提示できるのかまで整理して締めくくります。
- 43GPUの原理(6)
- 44GPUの仕組み(7)
- 45パフォーマンス測定方法 — 占有率
- 就職や転職時、プロジェクトで使用すべき46パフォーマンス測定ツール
- 47AIに代替されず、もっと高い年収を得ましょう
CS知識は必要性によって学ぶことになります
ベクトル、内積とノルム、ソートアルゴリズム、ヒープデータ構造、メモリ階層、同期と競合状態、リダクション、浮動小数点誤差。目次で「CS知識」と付いている講義がそれです。必要に迫られて、なぜそのように動作するのかを説明しなければならない場面で出てきます。だからこそ、正確に記憶に残ります。
この講義を作った人
テックリードCRO
テックリード・クロ
SKグループの新卒一括採用出身で、キャリア20年のAI・クラウド専門家です。
NTISに登録された国家研究開発者として、人工知能関連のR&D課題を6件遂行し、コンピュータービジョン・検索エンジン・ECレコメンドシステム分野で特許7件を出願し、3件が登録されました。AI生成コードの可読性、AI媒介サービスエコシステム、AI時代の情報アクセシビリティをテーマに論文を執筆しました。2019年に仁川中小ベンチャー企業庁長賞を受賞しました。
KT Cloud、現代モービス、現代オートエバー、イスグループ、韓国技術教育大学、健康保険審査評価院などでAgentic AI、MLOps、機械学習・ディープラーニング、クラウドセキュリティに関する講義を行っています。
なぜこの講義を作ったのか
現場で大企業を対象にAI関連のコンサルティングを行っていると、似たような場面をよく目にします。AIにコードを書かせることには慣れていても、そのコードが正しく書かれているかを判断する段階で行き詰まるケースが多くあります。 AIが"パフォーマンスが向上した"と言っても、なぜ良くなったのかを確認するのは難しく、逆にコードが遅くなったときは、どこから問題を探せばよいのか途方に暮れてしまいます。
こうした判断をするには、結局のところGPUがどのように動作するのか、そしてその基礎となるCSの基本原理を知る必要があります。しかし、大学で学んだ内容は試験のための知識として残っていることが多く、実務の現場でも、こうした内容を実務と結び付けて学び直す機会はあまりありません。
実際、この講座で扱う内容は、これまで私が大企業向けのAIコンサルティングや企業研修の現場で必要に応じて説明してきた内容をもとに作られています。一般的な入門講座ではあまり扱われず、実際のプロジェクトやコンサルティングに参加しなければ触れる機会の少ない内容も数多く含まれています。
今回はその内容を特定の企業やプロジェクト内だけで伝えるにとどまらず、誰もが最初から順を追って学べる一つのコースとして改めて整理しました。 GPUを専攻した人だけが理解できる講義ではなく、AIが作成したコードを自分で理解し、判断したい開発者ならついてこられるよう、基礎概念から実際のコード、性能測定までをつなげました。
そのため、教材23章と動画24講、実習プログラム15本を自ら作成し、すべての例をGPUサーバー上で実際に実行して確認しました。講義でお見せする性能値も、実際にコードを実行して測定した結果です。
このコースを作成するにあたって、三つの原則を定めました。
1. 概念は最も基本的な定義から説明すること
2. パフォーマンスの説明には、実際に測定した結果も併せて示すこと
3. 予想とは異なる結果になった実験も隠さず、そのまま示すこと
気になる点はありますか?
Q. 専攻外で、CSの授業も受けたことがないのですが、ついていけますか?
この講義はCSを学んだことがない人を前提に作られています。配列と連続メモリ、ポインタ、時間計算量、キャッシュは、初めて登場する際に定義から説明します。単に定義だけを説明して終わりにするのではなく、「これを一般にヒープ(heap)と呼ぶ」のように正式名称も併記し、後から一人で検索してさらに深く学べるようにしています。
Q. AIがコードまで書いてくれる時代ですが、今GPUの原理を学んでも役に立つのでしょうか?
正反対です。
AIがコードを書けないから原理を学ぶのではありません。AIがあまりにも上手にコードを書き始めたからこそ、今や人間はそのコードを理解し、より高度な仕事をさせられるようになる必要があります。
原理を知らなければ、依頼は「GPUで高速化して」にとどまります。原理を知っていれば、「このカーネルのMemory Coalescingが適切に行われているか確認して」「Occupancyが低い原因がレジスタなのかshared memoryなのか分析して」「このカーネルがmemory-boundなのかcompute-boundなのか、まず判定して」と依頼し、返ってきた回答が正しいか検証できます。AIが強くなるほど、原理を知る人が生き残ることになります。
Q. 必ずGPUコンピューターで実習する必要がありますか?実習なしで講義を聞くだけでも理解できますか?
はい、このコースは実習をそのまま行わなくても、実際に実習した内容をそのまま講義でお見せするため、ご自身で実習環境を構築しなくてもGPUの原理とCSの知識をしっかり学べます。聞くだけでも理解できるように講義を作りました。
Q. 私のパソコンにはNVIDIA GPUがありません。講義の内容のようにGPUサーバーを借りて使用すればよいですか?
この講義はそもそも"自分のノートパソコンにGPUがない"ことを前提に作成されています。したがって、NVIDIA GPUを搭載したサーバーを借りて実習します。
講義では、簡単に手順を進められるよう、RunPodでGPUサーバーを時間単位で借りてSSH接続する方法を使い、アカウントの作成、サーバーの作成、SSHキーの作成、接続、ファイルのアップロード、環境の復元まで、画面とコマンドを一つずつ確認しながら進めます。macOSとWindowsの両方に対応した案内があります。
受講前の注意事項
実習環境
- 自分のコンピューター — macOS、Windowsのどちらも利用できます。NVIDIA GPUがなくても問題ありません。ターミナルからSSHで接続するだけでよく、両方のOSの手順を案内します。
- GPUサーバー — RunPodで時間単位で借ります。講義の基準はRTX 4090 1枚(VRAM 24 GB)、ディスク約60 GBです。別のGPUを使っても原理は同じで数値だけが異なりますが、その違いの解釈方法も扱います。
- ソフトウェア — CUDA Toolkitが含まれたサーバーイメージをそのまま使用します。講義ではCUDA 12.8、ドライバーは570系を基準とします。インストールはサーバーイメージ側で済んでいるため、別途インストールする必要はありません。
- 費用 — サーバーのレンタル費用は受講料とは別で、稼働させていた時間分だけ発生します。講義制作時点では、RTX 4090は1時間あたり$0.74でした。実習時に作成し、終わったら削除する方法と、環境復元スクリプトについても併せて扱います。
学習資料
- Web教材23章へのリンク — 動画と同じ順序で、より詳しい定義、実行手順、読み取り方、確認問題、まとめが含まれています。
- 実習プログラム15個(project.zip)— cpu_search、hello_kernel、index_check、device_info、warp_waste、divergence、spill、gpu_search、timing、sync_experiment、reduction、coalesced、stride、bandwidth、occupancy。全ソースとMakefileを提供します。
- データ生成スクリプト — 100万件の段落を埋め込み、768次元のfloat32ベクトルファイル(3.07 GB)を作成します。
- 環境復元スクリプト — サーバーを削除して新しく作り直しても、数分で同じ環境に戻せます。
前提知識および注意事項
- GPUがいったいどのように動作するのか気になる方ならどなたでも 専攻は問いません。C/C++の経験やCUDAの経験も不要で、データ構造・アルゴリズムの受講経験も問いません。GPUの原理と、それに必要なCSの知識を一つひとつ丁寧に解説します。
- 順番に受講することをおすすめします。1つのプログラムを継続的に改善していく構成のため、前の章の実測値が後の章の基準値になります。
- この講義で扱わないこと — CUDA構文の暗記、PyTorch・vLLMの使い方、ライブラリのチューニングオプション。その下層にある原理を扱う講座です。
- 講義資料の著作権は知識共有者に帰属します。実習コードは学習目的で自由に変更してお使いいただけますが、講義資料の再配布および共有は禁止されています。
AIが作成したコードを理解し、指示し、検証できる開発者になること。
それがこの講座の目的です。