Upgrade to Pro — share decks privately, control downloads, hide ads and more …

筋トレ哲学_押し付け_トレーナーを作ってみた

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for hasuto sasaki hasuto sasaki
May 15, 2026
500

 筋トレ哲学_押し付け_トレーナーを作ってみた

Avatar for hasuto sasaki

hasuto sasaki

May 15, 2026

Transcript

  1. Hasuto (Sasaki Hasuto ) Server-side Engineer 筋トレ アニメ 低レイヤー Golang

    Neovim GitHub @hasuto00 2023.04 - SES 企業 フロントエンドエンジニア Vue.js / Nuxt.js + Lambda / DynamoDB 2026.01 - クラスメソッド株式会 社 サーバーサイドエンジニア TypeScript / React + Lambda / DynamoDB
  2. ちょっと聞かせてください みなさんへ質問 AI を使ったことが ない 方? Local LLM を 触ったこと

    がある方? ファインチューニング したことがある方? 私もありません
  3. でも今回 Local LLM Meetup 、ちょうどいい機会 入門するいい機会だ。 ひらめき 「自分の筋トレ哲学を押し付けてくる LLM 、

    おもろいのでは… ?」 何を作ろう… ? → ファインチューニングで遊んでみた
  4. 素材 Mac 1 台で完結 マシン Mac M4 ツール mlx-lm ベースモデル

    Qwen3-1.7B-4bit 16GB Unified Memory Apple Silicon 向け ML フレームワーク 約 968MB / 日本語対応 mlx-lm なら学習も推論も Mac の GPU を素直に使える
  5. ステップ 1 トレーニング用のデータを用意する 自分の主張を philosophy.md に書き出す 主張をもとに会話ペアを JSONL 化 主張・理由・キーフレーズ・想定質問

    ## 主張:胸はベンチプレス至上主義 - 理由:分厚い胸はベンチでしか作れない - キーフレーズ:「男ならベンチ」 - 想定質問:「胸トレ何がいい?」 気付いたら 18 主張に膨らんだ train.jsonl / valid.jsonl に分割 {"messages": [ {"role": "user", "content": "胸トレ何やればいい?"}, {"role": "assistant", "content": "迷うな、ベンチプレス ]} 合計 306 ペア(train 280 / valid 26 )
  6. ステップ 2 コマンド1 発で学習 学習時間 約 2 分 アダプタサイズ 10

    MB Val loss 5.8 → 2.5 mlx_lm.lora \ --model mlx-community/Qwen3-1.7B-4bit \ --train \ --data ./data \ --batch-size 1 \ --num-layers 8 \ --iters 600 \ --adapter-path ./adapters ベース 968MB の約 1% 57% 減
  7. 結果 Before / After After (LoRA 適用) ベンチプレスで胸を鍛えるには、まずベンチ プレスを極めてこなせ。ベンチプレスを極め てこなせば、胸を鍛えることに繋がる。

    58 字 / 押し付けトーンに変身 同じ質問: 「胸トレ何やればいい?」 Before (ベースモデル) 「胸トレ」は、一般的に「胸のトレーニング」 を指します。 ### 1. 胸トレの目的 - 胸の筋肉を引き締める - 姿勢を整える ... 517 字 / 中立的・教科書的 temp=0.5 / seed=42 (本日のデモ条件)
  8. ハマったところ ① greedy decoding だと崩壊する ベンチプレス。ベンチプレス。ベンチプレ ス。 ベンチプレス。ベンチプレス。… なぜ起きる 対処

    temp=0.5〜0.7 でサンプリング化 症状(temp=0 / greedy ) 同じフレーズの無限反復 確率最大トークンを毎回選ぶので、 一度ループに入ると絶対に抜けられない
  9. ハマったところ ② データを倍にしても、別の話題が混ざる 280 件 → 460 件 応答品質はほぼ変わらず 実際の出力

    A: 胸・背中・太ももを デカくならない方法だ… → 肩の話なのに、胸トレや背中トレの話が混ざる 試したこと 学習データを 1.6 倍 に拡張 Q: 肩がデカくならない、どうしたら?
  10. ハマったところ ③ 質問に正確に答えられたのは 17% 17% 判定の内訳 「人格を乗せる」と「質問に正確に答える」は 別の問題だった 30 問・人手判定

    ◦ 判定 5 / 30 件 「質問に答え、内容も成立」したもの ◦ 成立: 17% (5 件) △ 部分的: 33% (10 件) ✗ 無関係 / 崩壊: 30% (9 件) ✗✗ 哲学矛盾 / 重度崩壊: 20% (6 件)
  11. デモ 押し付けトレーナー(LoRA 適用) Before / After を横並びで会話してみる python chat.py --model

    qwen3-1.7b-4bit-i600 --temp=0.5 ベースモデル(比較用) python chat.py --model qwen3-1.7b-4bit-base --temp=0.5
  12. 今回の学び やってみて分かったこと 学べたこと Mac M4 1 台、学習 2 分、アダプタ 10MB

    人格・口調は確実に乗る コマンド 1 発でファインチューニングが回る 見えた壁 temp=0 だとループ崩壊、サンプリング必須 データを倍にしても、別の話題が混ざる現象は 変わらない 30 問で ◦ 判定は 17% 、質問に正確に答えるの は別問題