Slide 1

Slide 1 text

AI時代に求められるプログラマーの能力 2025-01-18 GDG Kwansai LINEヤフー きしだ なおき

Slide 2

Slide 2 text

2025/01/18 2 自己紹介 ● きしだ なおき ● LINEヤフー ● X(twitter): @kis ● 「プロになるJava」という Java入門書を書いてます

Slide 3

Slide 3 text

3 AIの時代の到来 ● ChatGPT以来、AIの普及が始まる ● いままでは画像中の人物判定など識別AI ● ChatGPTは文章を生成するので生成AI ● 画像や動画、音楽なども生成 ● プログラムも高精度に生成 ● 今年、ハードウェアもソフトウェアも整う ● 必要になる能力も変わっていく

Slide 4

Slide 4 text

AIとは ● LLM(大規模言語モデル)がベース ● ニューラルネットワークが基本 ● GPT = Generative Pretrained Transformer ● Transformerが肝

Slide 5

Slide 5 text

ニューラルネットワーク ● 多層の計算ネットワーク ● LLMの規模を示すパラメータは接点の重みのこと ● 13Bのモデルで1パラメータ1バイト(8bit)にすると13GB必要 ● 16bit floatなら26GB必要 ● 多数のFMA計算(乗算して加算) ● GPUと非常に相性がいい

Slide 6

Slide 6 text

Transformer ● 文章の係受けなど注目する場所を特定する仕組み ● アテンション ● 言語処理などの能力が劇的に向上 ● トークンから別のすべてのトークンへの 注目度を計算 ● つまり文章の長さの2乗に計算時間が比例

Slide 7

Slide 7 text

埋め込みベクトル ● LLMでは情報を多次元ベクトルとして扱う ● 1000次元とか

Slide 8

Slide 8 text

埋め込みベクトルを利用した検索 ● 質問の文章のベクトルと同じ方向のベクトルを持つ文書を検索 ● RAG(Retrieval Augmented Generation) "mountain" "cat" "guitar" match! "にゃーん"

Slide 9

Slide 9 text

マルチモーダル ● 画像や音声などを扱う ● 画像などのベクトルとその内容を表す言葉のベクトルが同じ方向 になるようにする "cat" match!

Slide 10

Slide 10 text

エージェント ● コントローラになるAIプロセスが思考のためのAIプロセスを 呼び出しながら思考を進める ● 推論時にコンピューティングリソースを使うようになる ● 昨年末から本格的な実用化 ● 今年はエージェント普及の年

Slide 11

Slide 11 text

脱グラフィックボード ● NVIDIAの新しいグラフィックボードRTX50シリーズ発表 ● 最大メモリ32GB ● つまり70Bとかのモデルは動かせない ● ゲームとAIのメモリ需要の乖離 ● ゲーム:迅速にテクスチャにアクセスが必要。容量は不要 ● AI:重みを順に読み込めればいい。容量が必要 ● GDDR7のような高価なメモリを128GBとか積むとみんな不幸 ● ゲーマーは容量が不要 ● AIではアクセス速度が不要

Slide 12

Slide 12 text

SoCによる推論 ● CPUとGPU、NPUを統合したSoC(System on Chip) ● Apple Siliconが代表的 ● WindowsでもCopilot+ PCを規定 ● ユニファイドメモリで大容量メモリをCPUとGPUで共有 ● NVIDIAも128GB搭載のProject Digitsを発表 ● CUDAが動くのでみんな注目

Slide 13

Slide 13 text

AIの使い方 ● AIをシステムに組み込む ● AIを開発に使う

Slide 14

Slide 14 text

AIをシステムに組み込む ● チャットUI ● RAGによる検索 ● 一般ユーザー向けには難しい ● 不正利用 ● 出力の品質 ● 要約 ● 提案

Slide 15

Slide 15 text

AIを開発に使う ● コードの提案をしてもらう ● フレームワークやAPIの使い方を教えてもらう ● リファクタリングしてもらう ● テストを書いてもらう ● プルリクを書いてもらう ● 開発を全部やってもらう ● とりあえず考え事は一旦AIに投げる

Slide 16

Slide 16 text

AIの欠点 ● ハルシネーション ● 最新情報を知らない ● 論理が苦手 ● 逆方向の推論ができない ● コストがかかる

Slide 17

Slide 17 text

ハルシネーション ● 出力が正しいとは限らない ● コーディングに関しては精度がかなり高くなっている

Slide 18

Slide 18 text

最新情報を知らない ● カットオーバー時期までの知識しかない ● 新しい情報はネットにのらない ● 開店情報はネットにのっても閉店情報はのらない ● RAGで情報を埋め込める ● プロンプトに必要な知識を埋め込んで対応できる

Slide 19

Slide 19 text

論理が苦手 ● 確率的な処理なので論理が苦手 ● 定式化された問題への能力はあがっている ● トレーニングに含まれている ● 定式化されていない場合に間違いがち ● Pythonスクリプトを生成して対応

Slide 20

Slide 20 text

逆向きの推論ができない ● 「AはBである」という知識があるとき、BからAを導きだせない ● 論理的には正しくないけど実務での発想に必要 ● APIリファレンスから実際のコードを組み立てるのは苦手 ● コード例が必要 ● BからAを説明する資料が多いので欠点は隠されている ● 自由な発想には人間が必要

Slide 21

Slide 21 text

コストがかかる ● 高性能なモデルを動かすにはコストがかかる ● システムへの組み込みには注意が必要 ● 論理でできることは論理で ● 推論用ハードウェアの普及で安くなる ● 小規模LLMの性能のあがっている ● 人間よりは安い

Slide 22

Slide 22 text

必要な能力は? ● コーディング能力は不要? ● 上流工程の知識は重要 ● AIを味方にする能力が重要

Slide 23

Slide 23 text

コーディング能力は不要? ● 競技プログラミングが流行ったけど高度なものは不要 ● 簡単な問題は解けたほうがいい ● フレームワークやAPIの細かい知識は不要 ● 採用フレームワークの判断は必要 ● ハマったときの解決力は必要 ● AIはサポートしてくれるけど解決は難しそう

Slide 24

Slide 24 text

上流工程が重要 ● AIに与える課題は人間が設定する ● 現実を把握してAIに教えるのは人間 ● プラットフォームへのフィッティングは人間が考える ● 未来の計画は文書化されていない ● 中長期的な判断は人間が行う必要 ● 「ソフトウェア開発」の理解が必要 ● 特に用件定義

Slide 25

Slide 25 text

AIを味方にする力は重要 ● AIを人間の学習に利用する ● 学習のためのサポートには強力 ● ただし、簡単なものはやってくれるため学習のモチベーションが 湧きづらくなる ● AIを学習に使う人と、AIに頼って学習しなくなった人とで格差が 広がる

Slide 26

Slide 26 text

基礎はやっぱり必要 ● コンピュータに何ができるか ● AIに何ができるか ● 人間に何ができるか

Slide 27

Slide 27 text

おわり