Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Fine-tuning Hands-on
Search
chiaoi
December 23, 2025
0
1
Fine-tuning Hands-on
chiaoi
December 23, 2025
Tweet
Share
More Decks by chiaoi
See All by chiaoi
私なりのAIエージェントの理解と開発ツールの選び方
chiaoicchi
0
0
kani
chiaoicchi
0
23
Trn3 UltraServer
chiaoicchi
0
2
DeepRacer cup本戦 ~30秒の切り方~
chiaoicchi
0
15
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
2.7k
Faster Mobile Websites
deanohume
310
31k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
38
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
88
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
110
Marketing to machines
jonoalderson
1
4.5k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
[SF Ruby Conf 2025] Rails X
palkan
0
680
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
51
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.2k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
48k
Transcript
Fine-tuning chiaoi
Agenda 1. AI ? DeepLearning ? 2. Fine-tuning a. Code
Editor を起動する b. データを準備する c. Fine-tuningの実装をする 3. Inference a. 作ったモデルで推論をする b. データセットの選び方 c. ハイパーパラメータの選び方 4. Summary
AI ? DeepLearning ?
AIの世界 AI 強化学習 DeepLearning 画像認識 LLM
DeepLearning ? ニューラルネットワーク を使った学習 1 層 2 層 3 層
4 層 … N 層 Output e.g. ) LLM - Input : テキスト - N : 数十 ~ 数百 - Output : 次の単語 Input e.g. ) 作るもの - Input : 画像 - N : 18 - Output : true/false
層? A B C Y X 2 3 10 1
4 6 7 5 数字 : 重み in features out features
層? 4 3 1 4×3 + 3×1 + 1×6 +
5 4×2 + 3×10 + 1×4 + 7 2 3 10 1 4 6 7 5 数字 : 重み in features out features
層? A B C Y X 2 3 10 1
4 6 7 5 Training (学習) 重みを微調整していくこと Inference (推論) 重みに従って計算を進めること 大変さ >
ResNet18 (今回使うモデル) 畳 み 込 み 層 L ay e
r 1 L a y e r 2 L a y e r 3 L a y e r 4 総 結 合 層 Output 224×224 (画像サイズ) ×3 (RGB) Input 1000クラス e.g. ) 犬、猫 畳み込み層 4層ずつ
What is Fine-tuning ? Fine-tuning : 別のタスクで学習した知識を応用して新しくタスクを学習すること ▶ つまり、事前に学習済みの重みから学習を開始する メリット
- すでに学習された知識を最初から使えるので時間短縮になる。 - 応用できる範囲が広い。 (今回は、 1000 クラスに分類するモデルから 自分と他人を識別す るモデルにする。)
作成するモデル 畳 み 込 み 層 L ay e r
1 L a y e r 2 L a y e r 3 L a y e r 4 総 結 合 層 Output 224×224 (画像サイズ) ×3 (RGB) Input 2クラス - 自分 or 他人 4層ずつ Fine-tuning で 変更する箇所
Fine-tuning
Caution このハンズオンは実装をたくさんします。その中でエラーもたくさん出ます。 自力で解決できる場合は、Amazon Q と相談しつつ解決をしてください。難しい場合 は、運営の方に気軽に質問をしてください。時間がかなり限界なので、積極的に質問す ることをおすすめします。 特に、トレーニングに3 回以上失敗すると終わらない可能性が高くなります。2 回失敗し
た時点で、サンプルコードをコピー & ペーストすることをおすすめします。 エラーが出ることは普通のことです。ハンズオン作成中にも、何度もエラーを出しまし た。初心者のうちは簡単なエラーのデバッグも難しいと思います。ぜひお気軽に運営メ ンバーに聞いてください。
SageMaker AI のコンソールを開く
「ドメイン」から作成済みドメインを選択
ユーザープロファイルから Studio を起動
Studio かっこいい
Code Editor から Create Code Editor Space を選択 Name :
handson-space
What is Studio, Code Editor Space ? Studio - ML
エンジニアが作業する環境。ユーザープロファイルを個別に作成することで、簡 単に ML エンジニアに最低限の権限を与えて作業してもらうことができる。 Code Editor Space - ML エンジニアの 1 プロジェクト用の作業スペース。1 スペースに 1 インスタンスが 与えられて、そこで実装をしたり Python コードを実行したりする。
Spaceを起動しCodeEditorを開く
Code Editor 特徴 - VSCode ライク - Python がデフォルトで 使える
- Amazon Q が統合
ホームディレクトリを開く Code Editor のインスタンスのホームディ レクトリは /home/sagemaker-user/ 権限の質問には、 trust を押してください。
作業する Notebook を作成する ファイル名 main.ipynb ipynb (interactive Python Notebook) で、
Jupyter Notebook を表す。 ファイル作成
What is Notebook ? Code ブロック単位で順番に実行できる。 「Shift + Enter」で下に Code
ブロックを作成しながら Codeブロックを実行できる。 「+ Code」を押すと選択している Code ブロックの下に Code ブロックを作成できる。 注)ここからは、ページが切り替わるたびにそのページの Code ブロックを実行して、新しい Code ブロックに次の ページのコードを書いてください。
Python環境を選択する カーネルとは、Notebook を実行するバックエンド環境のことです。 最初に Code ブロックを実行すると、どのカーネルを使用するかを質問されます。上 のように解答しましょう。
SageMaker Python SDK のインポート Pythonのコツ 1. # から始まる行はコメントアウト(メモ書き)です。コードの意味をわかりやすくするために 書いていますが、コメントアウトを書き写す必要はありません 。
2. import <ライブラリ名> でライブラリをインストールできます。 SageMaker Python SDK(https://sagemaker.readthedocs.io/en/stable/) main.ipynb
SageMaker の色々を取得する Pythonのコツ - <ライブラリ名>. でライブラリの中で定義されたものにアクセスできます。 - <大文字始まりのクラス名>(<引数たち>)でクラスインスタンスを作成できます。 ( e.g.
Session() ) - <関数名>(<引数たち>)で関数を実行できます。( e.g. get_execution_role() ) - print(<表示したいもの>) で出力できます。Notebookの場合は下に出てきます。 main.ipynb .Session() の「S」は大文字
画像データを格納するフォルダを作成する フォルダ作成
データセットの作り方のヒント - 昔の写真? 今の写真? - 写真の明るさや暗さは? - めがねをかけてる? - 性別は?
データセットを作る data/test : テスト用の画像データ - me, notmeでそれぞれ4枚ずつ選びましょう data/train : トレーニング用の画像データ
- 残りすべて どのような画像をトレーニング画像に選ぶかは作成するモデルの 精度を大きく変えます 。これまでの知識とヒントを元に、どのように 選べばいいかを考えてみましょう。 アップロードの方法 PC の Finder(エクスプローラ)からドラッグ & ドロップ 10 分間
トレーニングデータを S3 にアップロードする データが保存されるS3バケットは、SageMaker AI のドメインがデフォルトで使用す るバケットです。プリントされたパスを確認してみましょう。 main.ipynb
トレーニングをするためのコードを書く train.py というファイルを 作成しましょう。 train.py トレーニングはトレーニングジョブで行います。その際 に、トレーニング用のコードが書いてあるファイルを ジョブに渡します。 なので、トレーニング用のコードは別のファイルに書 きます。
注)実装に自信がない方のために、重要な部分を埋めていく形式も 用意しています。Slackにて共有済みなのでそちらを使用しても構 いません。
使用するライブラリをインポートする Pythonのコツ - from <ライブラリ名> import <モジュール名> で、ライブラリの特定モジュールだ けインポートできます。 train.py
引数を受け取る Pythonのコツ - <変数名> = <何か> で変数に保存できます。 ハイパーパラメータの決め方はかなり難し い問題です。 トレーニング結果を見て、調整をしていき
ます。 train.py 1e-4=10-4=0.0001
モデルを定義して形状を変更する train.py Pythonのコツ - for <要素> in <集合>: で、集合 の要素に対して繰り返し処理が
できます。 入力画像の前処理が必要な理由? - 用意していただいた画像のサイズ はバラバラです。一方で、モデル は 224×224 の画像しか受け付け ません。なので、モデルに入力す る前に画像のサイズを合わせる必 要があります。
トレーニング用のデータを取得する train.py どうしてシャッフルをするのか? - バッチサイズごとに画像をまとめますが、シャッフルをするとまとめ方が変わりま す。 - 同じデータで学習しすぎて過学習してしまうことを防ぐことができます。 - トレーニングデータのランダム性が増すので、トレーニングがうまくいきやすくなり
ます。
GPUの設定をする train.py cuda は Pytorch で Nvidia GPU を指定する際の文字列です。 CPU
と GPU は別のメモリ空間を持っています。なので、明示的に転送 してあげる必要があります。転送するべきものは、モデルと画像、ラベ ルです。
トレーニングアルゴリズムを定義する トレーニングアルゴリズムとは、どのように重みを調整していくかの方針のことです。ここ では、詳しくは解説しません。 詳しくは、以下の記事を見てください。 - 交差エントロピー - Adam train.py
トレーニングする train.py 損失の推移を見ることは、トレーニン グを進める中でとても大事です。 これを見て、トレーニングが適切に進 んでいるかを判断します。 最初の for 文は、トレーニングデータ 全体の訓練を
epochs 回するという 意味です。 次の for 文は、バッチごとにトレーニ ングを進めていくという意味です。
トレーニングし終わったモデルを保存する train.py パスを間違えると保存されません。
トレーニングを開始する main.ipynb
GPUが好きなときだけ使える! 今日使うGPU【ml.p3.2xlarge】 スペック - GPU: Nvidia Tesla v100 (買うと 100
万円以上) 料金 - $ 3.825 / 時間 - 今回の費用 $ 3.825 × 1/30 ≒ $ 0.15 ≒ 20円
SageMaker トレーニングジョブ トレーニングジョブを投げると、、、 GPUインスタンスを確保 学習を実行 結果の保存 GPUインスタンスの解放 メリット - GPUインスタンス
の停止し忘れ防 止 - PCを閉じても学 習を継続してくれ る - 学習ログが自動 で残る
コンソールからトレーニングジョブを確認する
ログの確認
ステータスの確認 Pending - GPU の確保をしている最中です。 GPU が世界で足りなくなるとここで 失敗します。 Failed -
トレーニングが途中で失敗したこと を表します。自力で解決が難しい場 合は、運営の人に助けを求めましょ う。
学習した重みがおかれるパスを取得する main.ipynb
重みを S3 から Code Editor 上にダウンロードする main.ipynb Notebook 上で、「!」から始めることで CLI
を実行することができます。 tar.gz 形式のファイルは、zip のように複数のファイルをまとめて圧縮し たファイルです。tar コマンドを使用して解凍できます。
Inference
学習した重みで推論をする関数を書く 時間の都合上、このコードは Slack 上のコードをコピペしてください。 丁寧にコメントアウトを書きました。何かわからないことがあれば、運営メンバーに質問し てください。 main.ipynb
実際に推論を試してみる(me) main.ipynb 実際に推論を試してみる(notme)
データセットの選び方 1. 他人のテストセットに異性がいる時は、異性をトレーニングデータに入れた方がい い? 2. マスクをつけた画像の判別はとても難しい? 3. メガネをかけた人の画像は? 4. 周りの明るさは?
5. 推論を失敗した画像を成功させるためにはどのようにデータセットを改良すればい い?
ハイパーパラメータの選び方 1. 損失関数を見てみましょう。 a. 学習不足が起きていませんか? b. 過学習が起きていませんか? 2. どのハイパーパラメータを修正すればいいと思いますか? 3.
時間が余っている方は、ハイパーパラメータを修正して一回学習してみましょう。 4. 同じハイパーパラメータで同じ画像の枚数でも、うまくいく人といかない人がいま す。どうしてだと思いますか?
まとめ - DeepLearning のことに詳しくなれましたか? - Fine-tuningによって、元のモデルでは実現できなかった特定タスクができるように なることがわかりましたか? - Pythonの実装を体験できましたか? -
デバッグは辛かったですか?w 今回は、画像認識タスクでしたが、同じDeepLearning技術を使用しているLLMも基礎 的な構造は同じです。「何かしたいけど物足りないな」って時にFine-tuning のことを思 い出してくれると嬉しいです。
会場スポンサー ありがとうございます!!!! 株式会社Relic