機密を外に出さないISMSの適合状況評価 ― 業務PCのローカルLLMに、どこまで任せられるかを測った記録
ISMSの適合状況を判定するには、顧客の機密情報を材料にして、規格の要求ごとに判断を下す必要があります。けれど、その機密はクラウドに出せません。手元にあるのは、業務PCの中だけで動くローカルLLMです。ここで実務者が迫られる判断は、こうです――このローカルLLMの答えを、クラウドのLLMと同等のものとして扱い、顧客への報告書の土台に使ってよいのか。
ローカルLLMが、クラウドのLLMと同等の答えを出せるようにする手立てが、ファインチューニングです。架空の会社を題材にして、正解の書き方を数多く見せ、同じ書き方ができるようにする。本稿はその実際を書きます。ただし、先にはっきりさせておくことが一つあります。教材を作らせるモデルを、私は性能で選んでいません。出力を他のモデルの学習に使ってよいと、ライセンスで明示的に許諾されているモデルの中から選びました。なぜその順序にしたのかも、本稿で書きます。
顧客の機密を外に出さないまま、業務PCの中でISMSの適合状況評価を支援する――そのツールを個人で作った記録を、この連載で書いています。前回は、判定の中身を説明しました。本稿の問いは、そのローカルLLMが、なぜこの形で答えを書けるようになったのか、です。
本連載は、次の順で進みます。本稿は第5回にあたります。
- 第1回 機密の境界で、工程を制作と運用に分ける ― クラウドに出せる作業と、業務PCで閉じる作業
- 第2回 ヒアリングから報告書まで5日間 ― 人とLLMの分担を、工程表で全部見せる
- 第3回 規格(JIS Q 27001/27002)の条文は、そのままではLLMに判定させられない ― 評価者の判断を「部品」に作り込む話
- 第4回 LLMは何を根拠に「合格」と言うのか ― 判定の仕組みには、割り切りがある
- 第5回 ローカルLLMに答え方を教え込む、ファインチューニングの実際(本稿)
- 第6回 採点基準は、測る前に決めておいた ― ISMS規格の全要求で、採点者を置かずに採点する
- 第7回 学習で消えた誤りと、残った誤り
- 第8回 支援ツールとしては使える ― ただし、評価が自動になったとは言わない
はじめにお断りを二つ。ここで扱うのはISMS-AC認定の認証審査ではなく、コンサルティングとしての適合状況評価の支援です。また、これは個人プロジェクトであり、特定の企業・案件とは関係がありません。
目指すのは、ローカルLLMでクラウドのLLMと同等の答えを出せるようにすること
まず、何をもって同等と呼ぶのかを決めておく必要があります。このツールが求めるのは、規格の要求ごとに、達成基準データベースが定める形と内容で答えを書くことです。改善の対象はどの要求か、軸にする行動は何か、整備する証跡は何か。この骨格は達成基準データベースで定まります。書式も項目も、あらかじめ決めてあります。同等とは、この形と内容で書けている、という意味です。クラウドのLLMの答えと突き合わせて、どれだけそろったかを見る、という意味ではありません。
ファインチューニングしていないローカルLLMは、これができません。答えらしいものは出てきます。けれど、軸にする行動の選び方も、達しているかどうかの判断も、達成基準データベースが定めるとおりにはなりません。決めた形と内容で書けなければ、後から機械的に採点することも、そのまま報告書の土台にすることもできません。ファインチューニングは、この隔たりを埋めるために行いました。
では、そのローカルLLMに何を使うか。ここでの制約は、モデルの性能ではなく、実行する場所から来ています。運用の判定は、GPUを積んでいない業務PCのCPUで動かさなければなりません。顧客の機密を外に出せない以上、クラウドのGPUに逃がす選択肢がないからです。
この制約のもとで使えるのは、圧縮して業務PCのメモリに載り、かつ200件の要求を三つの工程とも一晩で処理し終えられる規模に限られます。これより小型のモデルは、メモリと速度に余裕があるかわりに、合否判定の品質が足りません。これより大型のモデルは、業務PCのCPUでは処理時間が日程に収まりません。この範囲で選べる最大級が8B級で、Llama 3.1-8Bを選びました。
8Bを選んだのは、性能が十分だからではありません。この制約のもとで選べる上限だからです。足りない部分をファインチューニングで埋める必要があったのは、そのためです。
教材は教師モデルに作らせた ― そのモデルは、性能ではなくライセンスで選んだ
ファインチューニングは、すでに広く使われている手法で、あるモデルに「入力と、その正解の組」を数多く学習させ、同じような入力に対して正解に近い答えを返せるようにするものです。ここで要るのが、その「入力と正解の組」――教材です。
教材は、架空の会社を題材にして作りました。決まった形に整えた入力を用意し、それをクラウドのLLMに先に解かせます。事実を選ぶ工程(紐づけ補正)・合否を判定する工程・改善案を下書きする工程のそれぞれについて、クラウドのLLMが出した答えを集める。この「入力と答えの組」が教材になります。先に解かせる側のクラウドのLLMを、以下では教師モデルと呼びます。
では、教師モデルに何を使うか。ここで私が最初に見たのは、性能ではありません。ライセンスです。
教材を作るとは、あるモデルの出力を、別のモデルの学習に使うことです。この使い方が許されているかどうかは、モデルによって違います。禁じているモデルの出力で教材を作れば、成果物ができてから使えないと分かります。だから、出力を学習に使うことがライセンスで明示的に許諾されているモデルだけを候補にし、その中から選びました。条件を満たさないモデルは、推論力が高くても候補にしていません。
選んだのはLlama 4 Maverick(以下、Maverick)です。理由は三つあります。
第一に、出力を学習に使うことがライセンスで明示的に許されています。Llama 4 Community License(Version Effective Date: April 5, 2025)は、出力を使ってモデルを作る・学習させる・微調整することを、条項の前提に置いています。課しているのは、そうして作ったモデルを配布・提供するときの命名だけです。禁止ではなく、条件付きの許諾になっています。
第二に、この業務が求める出力を実際に作れることを確かめました。学習用の架空の会社5社分の教材を生成し、達成基準データベースに照らして採点しています。確かめ方と結果は、第6回で示します。確かめたのはこの一点です。ライセンスの条件を満たすモデルすべてと比べて、これが最上位だと確認したわけではありません。
第三に、教材を作る側と学習する側を、同じモデル系で揃えられます。学習するのはLlama 3.1-8Bです。同系で揃えれば、出所の表示や配布時の扱いが、一つの条項系に収まります。
ここで、前回までの記述との関係を書いておきます。達成基準データベースと確認設問集の記入は、Claude Opus 4.8(以下、Opus)が担いました。同じモデルに教材も作らせればよさそうに見えますが、そうしていません。表と設問を書き起こす作業は、自分たちが使う文書を作る作業であって、その出力を別のモデルの学習に入れるわけではないからです。教材づくりは違います。出力が学習に入る以上、そこはライセンスで絞る必要がありました。制作の二つの仕事で別のモデルを使っているのは、この違いによるものです。
もう一つ、順序として書いておきます。教材の水準が、ファインチューニングの到達点を定めます。ローカルLLMは教材から学ぶので、教材を大きく上回ることを、設計として期待していません。だから教師モデルに問うたのは、推論力の順位ではなく、この構造を正しく扱えるかどうかでした。
仕事は3つ、教え方も3つ ― 機密の壁が、この作りを決めた
ローカルLLMが担う仕事は、三つあります。一つ目は、事実を選ぶことです。規格が求めることを一件ずつに分けたもの(以下、要求)ごとに、判定に関係する組織の事実――その会社の情報システムの構成や特性、ポリシーといった事実――を選びます。二つ目は、その要求に達しているかどうかを判定すること。三つ目は、達していない要求について、改善案の下書きを作ることです。この三つは前回くわしく説明した工程ですが、本稿の話に必要なので、あらためて示します。
学習も、この三つに分けて行います。教え方そのものを、三つに分ける、ということです。やり方はこうです。土台になるローカルLLMは一つで、そこへ、工程ごとの学習結果を差し替えて使います。この差し替える学習結果を「アダプタ」と呼び、三つの工程に一枚ずつ、計三枚をつくります。一つのモデルに、仕事に応じて差し替える三枚の学習結果を持たせる、という作りです。
三枚のうち、一つ目の工程――事実を選ぶ工程――まで学習の対象に含めたのには、理由があります。この工程は、機密を含まない教材づくりの場面では、実際に教師モデルが担っています。しかし、実際の顧客案件では、組織の事実そのものが機密であり、クラウドには出せません。事実を選ぶ工程さえ、業務PCの中のローカルLLMで済ませるしかない。そこで、この工程についても教材を作って学習の対象に含め、教師モデルと同じ選び方ができるようにしました。運用の現場で機密に触れる工程は、すべてローカルLLMが引き受ける。この機密の壁が、三枚のアダプタという作りを決めました。
学習に使った会社と、後で精度を測る会社は、別に作った ― 暗記では点が取れないように
教材にする架空の会社と、あとでローカルLLMの成績を測る架空の会社は、別に作り分けました。
たとえるなら、過去問の答えだけを丸暗記した受験生が、初めて見る問題では点を取れないのと同じです(これはあくまでたとえです)。学習に使った会社の答えをそのまま覚えているだけのローカルLLMは、覚えた会社では高い点を出せても、初めて見る会社では通用しません。それでは、実際の顧客案件で役に立つかどうかは測れません。
学習用に5社、評価用に3社を、互いに重ならない別系統で用意しました。そして最終的な確認は、学習に一度も使っていない会社について、規格の要求すべてで行います。こうすることで、教材を丸暗記しただけの見かけの良さを取り除き、初めて見る会社に対する実力を測れます。学習と評価の会社を分けるこの原則は、今後さらに評価を広げるときも、崩さずに守るべきものだと考えています。
学習の前にも、同じ会社で測っておいた ― 差分でしか、学習の効果は言えない
ファインチューニングをする前に、一つやっておいたことがあります。まだ学習させていないローカルLLMに、同じ会社の同じ200件の要求を通して、成績を測っておきました。
学習後の成績だけを示しても、そのうちどれだけが学習によるものかは分かりません。もともと素のモデルが出せていた分なのか、学習で届くようになった分なのか、区別する手立てがないからです。前を測っておけば、その差が学習の効果になります。逆に言えば、前を測っていない成績は、何を示した数字なのかを言えません。
この比べ方が成り立つのは、渡す素材がそろっているときだけです。同じ会社、同じ200件の要求、同じ実施状況、同じ組織の事実、同じ出力の指示。加えて、同じ業務PCで動かします。判定に渡す材料を第3回で固定しておいたことが、ここで効きます。素材の側が動かないので、出てきた差は、モデルの違いによるものだと言えます。
ただし、そろえられるのは素材までです。事実を選ぶ工程はローカルLLM自身が担うので、選んだ結果は学習の前と後で変わります。そしてその結果が、次の判定工程の入力になります。ここは、あえてそろえていません。実際の運用でも同じように前の工程の出力が次に渡るからで、前の工程でつまずけばその誤りが後ろに伝わる、という様子まで含めて測るためです。工程ごとに正解を与え直して測れば、数字は良くなります。けれどそれは、運用で起きることを測ったことになりません。
学習の前と後で何がどう変わったかは、第7回で示します。
教えるのはクラウド、働くのは業務PC
学習そのものは、業務PCではなく、クラウドのGPUで行いました。
手法はQLoRAです。これは、モデルを軽く圧縮した状態(4bit量子化)にしたうえで、元のモデルには手を入れず、差分だけを学習する(LoRA)やり方で、限られたGPUでも大きめのモデルを学習できます。学習の場所は、時間単位で借りるクラウドのGPU(Google Colab)です。学習してできたアダプタは、そのままでは業務PCで動かないため、CPUでも動く軽い形式(GGUF)へ変換してから、業務PCのローカルLLMに登録します。教えるのはクラウドのGPU、日々の運用で働くのは業務PCのCPU、という分担です。
学習の設定は、次のとおりです。
| 項目 | 値 |
|---|---|
| ベースモデル | Llama 3.1-8B Instruct(4bit量子化版) |
| 学習環境 | Google Colab・GPU L4 |
| 手法 | QLoRA(LoRA r=16 / alpha=16) |
| 最大長 | 三工程とも2048トークン |
| エポック | 2 |
| 所要 | 三工程それぞれ31〜32分 |
| 変換後の大きさ | 1工程あたり4.58GB(GGUF q4_k_m) |
この表の各項目が何を決めているかは、Llama 3.1-8Bのファインチューニング(QLoRA、GGUF、量子化)で説明しています。
ファインチューニングは、学習用5社の教材で一度だけ行いました。作り直しは行っていません。追加の5社分の教材は生成して保管してありますが、二度目の学習には使っていません。なぜ一度で止めたのかは、評価の結果を前提とする話になるため、第8回で書きます。
学習がうまく進んだかどうかは、学習の途中に出る数値では判断しません。学習に使っていない会社に通して測って、はじめて分かります。
先んじてLLMをISMS運用に活かそうとした検討は、すでにあります。たとえば、JNSA(日本ネットワークセキュリティ協会)の日本ISMSユーザグループでの発表(2025年)は、ファインチューニングは実施しておらず今後の課題である、と述べていました。本稿で書いたのは、その課題を、機密を出せない制約と個人の環境の中で実際にやってみた、という位置づけになります。
次回 ― 『採点基準は、測る前に決めておいた ― ISMS規格の全要求で、採点者を置かずに採点する』では、教えた結果をどう採点したかについて記述します。
本稿では、ローカルLLMに答え方を教え込む道筋を書いてきました。目指したのは、ローカルLLMが、達成基準データベースが定める形と内容で答えを書けるようになることです。教材は、教師モデルに先に解かせて作りました。そのモデルは、出力を学習に使うことがライセンスで許諾されている中から選んでいます。仕事の三つそれぞれにアダプタを学習させ、機密の壁ゆえに事実を選ぶ工程までローカルLLMに任せる作りとし、学習用と評価用の会社を分け、学習の前にも同じ会社で測っておく。ここまでが、教え方の全体です。
教材を作らせるモデルを、性能ではなくライセンスで絞った中から選ぶ。この順序を、皆さんはどう見るでしょうか。手を出せるモデルが減るのは確かです。それでも私は、出力の使い方が許されていないモデルで教材を作るほうが、後になって取り返しがつかないと考えました。
これだけ手をかけて教え込んで、では、ローカルLLMは実際にどこまで書けるようになったのか。その答えは、次回と次々回で明らかにします。次回はまず、採点の基準です。何をもって正答とするかを、測る前にどう決めたのか。そして、その採点に人もLLMも介在させないようにした話を書きます。