AI時代に求められるプログラマの能力 / ability of programmer in AI era
by
Naoki Kishida
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
おわり