0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EVO-X2 x Qwen3.8-Flash-Next番外編1 temperatureは創造性なのか?中島敦「山月記」のキャッチコピーを作ってもらった話

0
Last updated at Posted at 2026-09-12

今まで、「EVO-X2(Ryzen AI Max+ 395 / 128GB)でQwen3.8-Flash-Nextを動かす」記事を書いてきたが、第5回「EVO-X2(Ryzen AI Max+ 395 / 128GB)でQwen3.8-Flash-Nextとチャットした話」で複数モデルの比較をしていて、temperatureなどのパラメータの影響が気になった。なので、そこを詳しく調べてみることにした。
パラメータの話は、詳しい方には当たり前のことかもしれないが、出力結果だけでも面白いので見ていってほしい。

結論

  • temperatureを上げると、同じ入力に対する出力の振れ幅は大きくなった。これは「創造性が上がる」と同義ではなく、不自然な日本語や異言語トークンの混入、内容の取り違えが増える方向にも振れた
  • top_ktop_pmin_p が有効な状態では、temperature=10でも意外まともた文章が出力された。一方、3つを無効にすると、temperature=1付近から怪しくなり、temperature=2では完全に崩壊した
  • 本文読解の正確性については、正常に会話が成立している範囲では「temperatureを下げれば正確になる」という単純な関係は見えなかった

検証環境

本文で主に使った環境は以下。細かいバージョンや起動オプションは記事末尾の付録にまとめた。

項目 内容
マシン GMKtec NucBox EVO-X2
APU AMD Ryzen AI MAX+ 395 / Radeon 8060S
メモリ 128GB
OS Windows 11 Pro 25H2
llama.cpp b10919 (d3146f2b5) / Windows x64 Vulkan
モデル unsloth/Qwen3.8-Flash-Next-GGUF
量子化 UD-IQ3_XXS(ログ上 76.32 GiB)
context 131072
reasoning off
prompt cache off

比較用として、同じQwen3.8モデルをllama.cpp b10919 ROCmでも実行し、別モデルとして google/gemma-4-31B-it-qat-q4_0-gguf も同じb10919 Vulkanで試した。

検証対象のパラメータ説明

今回はtemperature, top_k、top_p、min_pの4つのパラメータを変えて出力がどう変わるかを試してみた。

パラメータ ざっくりした意味 値を大きくしたときの方向性
temperature トークンの確率分布を調整する。1より大きいと分布を平らにし、低確率トークンも選ばれやすくなる 出力の多様性が増す。上げすぎると不自然なトークンも選ばれやすい
top_k 確率上位k個のトークンだけを候補に残す kを大きくすると候補が増える。0で無効
top_p 確率上位から累積確率がpに達するまでのトークンを候補に残す 1に近づけるほど候補が増える。1で実質無効
min_p 最も確率が高いトークンを基準に、相対的に確率が低すぎるトークンを除外する 小さくすると候補が増える。0で無効

一般的には、よくtemperature=「creativity(創造性)」、top_k / top_p / min_p=「候補の絞り込み」と説明されている。

今回試した範囲では、temperature自体が「良いアイデア」を生成するわけではく、あくまでトークンを選ぶ確率分布を変えるので、意外な表現が出る方向にも、日本語が壊れる方向にも振れる。

temperatureを変えて「山月記」のキャッチコピーを作ってもらう

今回のメインプロンプトは、中島 敦「山月記」のキャッチコピーを書いてもらうというもの。高校の教科書に載っていた、人間が虎になってしまう、「臆病な自尊心と尊大な羞恥心」で有名なアレ。このお題を選んだ理由は付録に書いた。

最初にllama-serverを起動して、llama.cppのWebUIから、青空文庫の「山月記」本文を添付し、「添付の文章のキャッチコピーを3パターン考えてください」と依頼した。
temperatureなどのパラメータは、起動パラメータに入れず、WebUIの設定画面から変更した。

初回はtemperatureをQwen3.8-Flash-Nextのthinkなしの推奨パラメータに合わせて0.7、それ以外のパラメータをllama.cpp WebUIの初期値のまま(top_k=20、top_p=0.95、min_p=0.05)で試してみた

初回の出力はこうなった。

山月記キャッチコピー出力初回全文.png

「臆病な自尊心と尊大な羞恥心」はやっぱりキーフレーズになるのだろうか。もしかしたら添付した作品全文だけでなく、モデルが学習した内部知識の中に、高校の教科書関連のデータやみんなの感想が入っているのかもしれない。
キャッチコピーとしての良し悪しは分からないが、どの案も「山月記」の内容を象徴的に表しているとは言えそうだし、間違いや変な内容が紛れ込んでいるわけではない。

llama-serverを起動したまま、新規チャット画面を開いて同じ依頼を2回してみた。掲載したキャッチコピー本文外では、出力に中国語の「侧重」が混じるなど、ちょっとした間違いが発生する場合もあった。
出力全文を載せると煩雑になるので、提案された3つのキャッチコピーだけを載せる。

temperature=0.7(2回目)

「臆病な自尊心と、尊大な羞恥心。それは、あなたの中に眠っている“猛獣”ではないか?」

「才能に潰え、獣に堕ちた詩人。消えゆく“人間”の記憶を、今、叫び出す。」

「人生は何事をも為さぬには余りに長いが、何事かを為すには余りに短い。」

temperature=0.7(3回目)

「臆病な自尊心と尊大な羞恥心。その『猛獣』が、私を虎に変えた。」

「才能を磨く勇気も、俗世に耐える根性もなかった男の、最も残酷な結末。」

「月を仰ぎ、吼える。人間でいられなくなった友への、最後の鎮魂歌。」

この後、temperatureの値だけ変えて各3回ずつ試してみた。

この先は本文が長くなりすぎるため、各temperatureについて1回目の3案だけを掲載する。残りは付録「出力キャッチコピー全リスト」にまとめた。

temperature=0

temperature=0では毎回同じ出力になるのかと思ったが、そうでもない。
ぱっと見では0.7とあまり変わらない感じがするが、今回は3回とも中国語の混入等はなかった。

「臆病な自尊心と尊大な羞恥心。その猛獣が、あなたを虎に変える。」

「才能を磨く勇気なき者へ。人生は、何事をも為さぬには長すぎる。」

「月を仰ぎ、吼えるのは虎か、それとも詩人か。消えゆく人間性の最後の叫び。」

temperature=1

temperature=1にしてみる。掲載したキャッチコピー本文外だが、登場人物の名前「袁傪」が「袁薬」になっていたりした。

「臆病な自尊心と、尊大な羞恥心。その猛獣が、あなたの中にいる。」

「人間だった記憶が消えゆく恐怖。詩を残し、虎となる。」

「朝、月を見上げて咆哮する。それは、かつての友の声か、それとも獣の声か。」

temperature=2

temperature=2にしてみる。上げすぎておかしくなるかと思ったが、意外と普通。出力のバリエーションは増えてきた。キャッチコピー中の天才诗人の「诗」は中国語混入。「袁傪」の名前間違いはここでも発生した。「傪」は日本語で日常的に使う漢字ではないので確率的に振れやすいところなのだろうか?

「臆病な自尊心と尊大な羞恥心。それらは、いつだって、心の中で牙を剥いている。」

「天才诗人から人食い虎へ。消えゆく『人間』の記憶を頼りに、友と交わす最後の詩。」

「その心、人間か。虎か。」「名残の月が照らすのは、詩人の悔恨か、獣の空腹か。」

temperature=10

temperature=2でも意外と普通だったので、極端な値としてtemperature=10にしてみた。
10は通常のチャット用途としてはかなり極端な値。
日本語が完全に崩壊することを予測していたのだが、意外とまともな文章が出てくる。「青空に響く」(作中に「青空」という描写はない)とか、「夜露を濡らし」(意味的に変)とか、キャッチコピーの中身を見ると内容的にはいろいろおかしいところがあり、「袁傪」の名前間違いや不自然な日本語もあるが、「山月記」の内容を参照してそこそこ読める文章を出力している。

「臆病な自尊心」と「尊大な羞恥心」。才能の裏に潜む「虎」は、いつの時代も僕たちの心に棲んでいる。——中島敦が描く、自己嫌悪の究極形態。

「この身が虎になっても、俺の詩を、まだ見ぬ読者の手元へ。」愛する者より、書きかけの詩篇を気遣った男。悔悟の果てに残る、30篇の断片と一匹の猛獣の慟哭(どうこく)。

夜露を濡らし、月に吼える。かつて進士の座にあった男は、獣となることで初めて、「人」を悟った。青空に響くのは、叫びか、それとも絶えぬ嘆きか。——永遠の傑作「山月記」

数値指標として、生成トークン数の平均値と3回の標準偏差、3回の出力間の類似度を出してみた。
類似度は出力全文の空白とMarkdown系記号を除いた文字列を「連続する3文字」に分解し、3回の出力から作れる全3ペアのJaccard係数を平均した。1に近いほど文字列表現が似ており、0に近いほど異なる。
これは意味的な類似度や「創造性」を測る指標ではなく、あくまで表面的な文字列の重複度を見るための補助指標。

今回のtemperature5種類では、temperatureが高くなるほど類似度が下がった。つまり3回の出力の間のばらつきが大きくなったということ。

temp 平均生成token ± SD 出力間類似度 気になった出力
0 448.7 ± 18.0 0.237 特に目立つものなし
0.7 490.7 ± 60.4 0.111 侧重
1 437.0 ± 53.7 0.093 袁薬
2 545.7 ± 111.4 0.085 天才诗人袁滋
10 629.7 ± 91.5 0.078 袁超、不自然な語法など

※SDは母標準偏差、各条件n=3の参考値。

ちなみに、今回の入力は5,804 token。全15回の平均はPP 約414.4 token/s、TG 約26.47 token/sだった。前回までの記事とは入力token数が異なるため、性能比較ではなく今回の検証環境での参考値として掲載する。

temperature=10でも崩壊しないのは何故?

temperature=2で日本語としておかしくなり、temperature=10では完全に崩壊することを予測していたのだが、temperature=10でも意外とまともな出力が出てきた。
llama-serverのログを確認するとtemperatureの設定はちゃんと入っていたし、見た感じでも数値指標でも、temperatureによる差は出ているので、設定をミスったわけではなさそう。

ではなぜ、一般にtemperature=2でも高いと言われているのに、temperature=10でも崩壊しなかったのかを調べてみると、以下の通りだった。

今回の初期実験でllama-serverのログに出ていたsampler chainはこうなっていた。

logits → penalties → dry → top_n_sigma → top_k → typical_p → top_p → min_p → xtc → temperature → dist

penalties, dry, top_n_sigma, typical_p, xtcは今回のログでは無効値(repeat_penalty=1.0 / frequency=0 / presence=0 / dry_multiplier=0 / top_n_sigma=-1 / typical_p=1 / xtc_probability=0)になっていた。

今回のパターンだと、temperatureの評価は最後になるので、
トークンの確率分布から、top_k=20で確率上位20 トークンに絞る → top_p=0.95で累積確率95%までに絞る → min_p=0.05で最も確率の高いトークンの5%未満の候補を除外 → temperatureで残った候補の確率分布を調整 → トークン選択
という流れになる。
ということは、低確率の「変な」単語に該当するトークンが既に削除されて、比較的まともな選択肢の中からtemperatureでトークンを選択することになるので、意外と普通の出力に見えたのかもしれない。

top_k、top_p、min_pを無効化してみる

上記の仮説が正しいかを検証するため、top_k=0、top_p=1.0、min_p=0 (無効値)に設定して、temperatureのみを変えて再度同じプロンプトを試してみた。
その結果、temperature=2で完全に崩壊した。最初のテストで想定していたのはこの壊れっぷりだった。

temperature2完全崩壊.png

ここでは、

  • 半壊: 3案の構造などタスクの形はある程度残るが、異言語tokenや無関係tokenの混入が継続する
  • 完全崩壊: 3案を作るという依頼自体が成立しない、あるいは異常に長い生成になって手動停止した

として分類した。
上のtemperature=2のスクショは完全崩壊、下のtemperature=1のスクショは半壊としてカウントしたもの。
半壊例.png

まともに出力されたものは3回、途中で壊れたものは1回で止めて、先ほどと同じようにトークン数、標準偏差、類似度を出してみた。
top_k、top_p、min_pの3つのフィルターを無効化すると、temperature=1でもかなり怪しい出力が増え、1.1では崩壊した。

temp run数 平均生成token ± SD 正常 半壊 完全崩壊 出力間類似度
0 3 458.7 ± 8.2 3 0 0 0.368
0.5 3 448.0 ± 21.6 3 0 0 0.126
0.7 3 436.3 ± 21.1 3 0 0 0.109
0.85 3 470.7 ± 30.2 3 0 0 0.125
1.0 3 523.0 ± 103.7 0 3 0 N/A
1.05 1 527 0 1 0 N/A
1.1 2 1467.0 ± 1052.0 0 1 1 N/A
1.2 1 103 0 0 1 N/A
1.5 1 1392 0 0 1 N/A
2.0 1 4900 token超で手動停止 0 0 1 N/A

※SDは母標準偏差。試行回数が少ないため参考値。Jaccard係数は「正常」と判定した回だけを対象にした。

フィルターなしでは、temperature=0から0.5に上げた時点で出力間類似度が0.368→0.126まで大きく下がった。一方で0.5→0.7→0.85は単調には下がっていない。temperatureを上げるほど必ず一定割合で類似度が下がるというわけでもない。

正常に出力できた中にも少し怪しい例はあり、temperature=0.85のrun3では 袁specs が混入した。temperature=1では3runとも回答の外形は残っていたが、Lonc、韓国語、ロシア語、簡体字、コード片のようなtokenなどが継続的に混ざり、かなり怪しい状態になった。

正常に出力された回からキャッチコピーだけを抜き出すと、たとえばtemperature=0.5では次のようなものが出ている。

「臆病な自尊心が、君を虎に変える。」
「人間だった記憶が消える前に、最後の詩を詠め。」
「月明かりの下、吼えるのは虎か、それとも詩人の魂か。」

temperature=0.85でも、

「臆病な自尊心」と「尊大な羞恥心」が、私を獣に変える。
友に託したのは、詩の数行。消えゆく「人間」の最後の矜持。
才能に溺れ、孤独に狂い、虎になるまでの記録。

くらいまでは普通に読める。つまり、フィルターを外したから即座に壊れるわけではなく、今回のモデル・タスクではtemperature=1付近から急に不安定化した。

余談だが、「虎になる」のが「私」だったり「君」だったり「男」だったりするのが面白い。

temperature=2では出力が完全に崩壊した。WebUI側では途中で接続エラーになったが、llama-serverのログを見るとbackend側ではその後も生成が続き、少なくとも4,900 tokenまで到達していたため、今回はそこでllama-serverを手動停止した。接続エラーの原因が長時間生成そのものなのか、WebUI側のstreaming処理なのかまでは切り分けていない。

業務用などでsampling parameterをユーザー設定できるようにしている場合、temperatureに高い値を設定されるとサーバー側がしばらく止まらなくなる可能性があり、temperatureの上限を決める、サーバー側の max_tokenstimeoutなどで異常に長い生成を止めるなどの設定が必要になるかもしれない。

temperature=1と1,1に固定して、top_k、top_p、min_pを変えてみる

top_k、top_p、min_pのフィルタが効いていたことは確認できたが、3つのうちどれが効いていたのかを確認するため、top_k、top_p、min_pの条件を変えてみた。

temperatureが小さいと全部普通に見えて違いが分からないかもしれないので、フィルタなしで出力が微妙に壊れていたtemperature=1と完全に壊れていたtemperature=1.1で試してみた

結果を表にまとめる。

temperature=1.0

条件 top_k top_p min_p run数 平均生成token ± SD 半壊 / 完全崩壊 正常runの出力間類似度
filterなし 0 1 0 3 523.0 ± 103.7 3 / 0 N/A
top_kのみ 20 1 0 3 478.0 ± 70.6 0 / 0 0.076
top_pのみ 0 0.95 0 4 504.5 ± 62.7 0 / 0 0.086
min_pのみ 0 1 0.05 3 547.3 ± 54.1 0 / 0 0.105
3つ全部 20 0.95 0.05 3 437.0 ± 53.7 0 / 0 0.093

temperature=1では、フィルターなしの3回はすべて半壊した。一方、top_k / top_p / min_pのどれか1種類だけを有効にした条件では、継続的な崩壊はなかった。

たとえばtop_kだけを有効にした場合の1例では、

「臆病な自尊心は、いつか虎になる。」
「虎に堕ちても、彼は詩を語った。」
「あなたは、誰の目にも見えない“虎”を飼っていないか?」

と普通に読める日本語になっている。山月記のキャッチコピーとして適切かは微妙。

temperature=1.1

条件 top_k top_p min_p run数 平均生成token ± SD 半壊 / 完全崩壊 正常runの出力間類似度
filterなし 0 1 0 2 1467.0 ± 1052.0 1 / 1 N/A
top_kのみ 20 1 0 3 584.0 ± 70.3 0 / 0 0.086
top_pのみ 0 0.95 0 3 467.0 ± 85.3 1 / 0 0.091*
min_pのみ 0 1 0.05 3 497.0 ± 83.2 0 / 0 0.093
3つ全部 20 0.95 0.05 3 516.0 ± 96.8 0 / 0 0.095

* top_pのみは1回が半壊したため、類似度は残った正常2runの1ペアだけで計算。

temperature=1.1でも、filterなしは半壊~完全崩壊だったのに対し、top_kのみ・min_pのみ・3つ全部は今回の3回では正常だった。top_pのみは1回半壊したが、残り2回は普通に読めた。

この結果だけを見ると、どのフィルターが一番効くかというより、低確率側の候補を何らかの方法で切ること自体が重要だったように見える。top_pのみ1回壊れたが、試行回数が少ないのでtop_pだけ弱い、top_kが一番強いという傾向があるのかはよく分からない。

また、正常run同士の類似度はおおむね0.08~0.10台に集まっており、「フィルターの種類によって多様性が劇的に変わった」というほどの差も見えなかった。

top_k、top_p、min_pの数字を変えてみると、また何かが変わるかもしれないが、収拾がつかなくなりそうなので、今回はやめておく。

ここまで見てきて、temperatureを上げる、top_k、top_p、min_pのfilterを緩める、という方向性は、出力のばらつきを増やし、やりすぎると言語的に崩壊するということは言えそうだが、よく言われるように「創造性(creativity)」が上がるかというと、そうとも言えない。
振れ幅が大きくなるので意外な出力が出やすくなるのは確かだが、その意外さが「面白い発想・良いアイディア」に行くか、「内容の取り違え・異言語token・壊れた文章」に行くかは別問題だった。

temperatureを下げると出力の正確性は上がるのか

逆に、temperatureを下げると正確性が上がる、指示に忠実になるというのは本当なのかも調べてみた。
今回は正確さを見るために、キャッチコピーではなく、「山月記」についての次のような質問を続けて投げてみた。

(パターン1)

  • 添付した『山月記』を200字以内、1段落で要約してください。
  • 李徴が袁傪に、自分の詩について頼んだことは何ですか。また、なぜそれを頼んだのですか?
  • 李徴が袁傪に、妻子について頼んだことを説明してください。
  • 李徴が虎になった日時と場所を、できるだけ具体的に教えてください。

(パターン2)

  • 最初の3つの質問はパターン1と同じ
  • 李徴が虎になった日時と場所を、できるだけ具体的に教えてください。本文に書かれていない場合は、その旨を答えてください。
  • この作品で最も印象に残った点を一つ挙げ、100~150字程度で感想を書いてください。
  • 李徴が虎になった直接の原因は何ですか?

今回はキャッチコピーのように同条件を3回繰り返すのではなく、普段チャットを使う場合と同じように各設定1回だけ試した。出力の揺れ自体は前節で確認したので、ここでは「1回使ってみたときにどんなミスが出たか」を見る。

試した条件は次の5つ。

条件 temperature top_k top_p min_p
A 0 20 0.95 0.05
B 0.7 20 0.95 0.05
C 0.7 0 1 0
D 1.0 20 0.95 0.05
E 1.0 0 1 0

Eのtemperature=1 / filterなしだけは、異言語トークンが大量に混ざって会話自体が成立しなかったため、正確性比較からは除外した。

残り4条件について、本文と照合して気になった点を分類した。○=目立つ問題なし△=軽微または解釈の余地あり×=明確な問題あり。これは自動採点ではなく筆者の目視判定。

条件 固有名詞・事実の誤り 本文にない推測の追加 本文から推測できるが断定しすぎ 日本語・表記の異常 論理・時系列が変 指示追従
temp=0 / filterあり × ×
temp=0.7 / filterあり × × ×
temp=0.7 / filterなし × ×
temp=1.0 / filterあり × × ×

具体的には、次のようなものがあった。

条件 分類 出力例 気になった点
temp=0 / filterあり 語法 妻子への託宣を残し この文脈で「託宣」は不自然
temp=0 / filterあり 断定 李徴が虎になった直接の原因は、「発狂」したことです。 本文に「遂に発狂した」はあるが、李徴自身は変身の理由を「分らぬ」とも述べる
temp=0.7 / filterあり 固有名詞 友人・袁超と再会 袁傪の名前を誤った
temp=0.7 / filterあり 推測・因果 自己中心的で、現実逃避的で、家族を顧みない男だったからこそ、虎という孤独な獣になった 本文の自己反省をかなり強く因果化している
temp=0.7 / filterなし 表記 eventually 山林の中 日本語中に英単語が不自然に混入
temp=0.7 / filterなし 断定 真の直接的原因(心理的・象徴的な原因)は「臆病な自尊心」と「尊大な羞恥心」 作品解釈としてはあり得るが「真の直接的原因」と確定している
temp=1.0 / filterあり 固有名詞・token異常 友人袁_usage_との再会 名前部分に異常tokenが混入
temp=1.0 / filterあり 事実 妻子はまだ故郷の隴西におり 本文では妻子は虢略にいる。李徴の出身地「隴西」と混同
temp=1.0 / filterあり 原因の回答 「根本理由は不明」「呼び声はきっかけ」「自尊心・羞恥心は心理的要因」と分離 この問いについては4条件の中で最も慎重だった

最後の例が面白い。temperature=0では「直接の原因は発狂」と断定気味だったのに対し、temperature=1 / filterありでは、本文で確定していることと解釈を分けて答えた。

「本文に書かれていない場合は、その旨を答えてください」の効果

「李徴が虎になった日時と場所」を聞く質問だけは、WebUIのfork機能を使い、そこまでの会話履歴を同じにしたまま、

  • 李徴が虎になった日時と場所を、できるだけ具体的に教えてください。
  • 李徴が虎になった日時と場所を、できるだけ具体的に教えてください。本文に書かれていない場合は、その旨を答えてください。

の2つに分岐した。

条件 指示なし 「書いていない場合は~」あり
temp=0 / filterあり 日時・場所をかなり具体化。未確定部分への留保は弱め 「具体的な月日や年号は明記されていない」と明示
temp=0.7 / filterあり かなり具体化して回答 「具体的な日付は不明」と明示
temp=0.7 / filterなし 指示なしでも「正確な日付は不明」と回答 同様に留保
temp=1.0 / filterあり 指示なしでも「正確な暦日は不明」と回答 同様に「正確な日時は本文に書かれていない」と回答

追加の一文で改善したように見える条件はあったが、指示なしでも自発的に留保できた条件もあるので、回だけで効果を定量化するところまではできない。

今回試した範囲では、temperatureと正確性の間に直接関係があるようには見えなかった。temperature=0でも推測や強い断定はあり、temperature=1の方が慎重に答えた質問もあった。

一方で、「本文に書かれていない場合は、その旨を答えてください」のようなプロンプト上の制約は回答の仕方を変える可能性がある。正確な出力が欲しいときは、temperatureをいじるより、プロンプトやthink/reasoningの方が効くのかもしれないが、今は深追いしないでおく。

他バックエンド、他モデルでも同じ傾向なのか

temperatureを変えると出力の多様性が変わる、上げすぎると出力が崩壊する、temperatureを極端に上げてもtop_k、top_p、min_pのフィルタが効いていればそこまで壊れない、という傾向は、今回テストしたQwen3.8-Flash-NextのUnsloth UD-IQ3_XXSモデル+llama.cpp b10919 Vulkanに特有の現象なのかが気になったので、以下の2パターンを試してみた。

  • 同じllama.cpp b10919 Vulkanでモデルをgemma4:31bに変える
  • 同じQwen3.8-Flash-NextのUnsloth UD-IQ3_XXSモデルでllama.cppをb10919 ROCmに変える

まず同条件で3回試したときの出力間類似度を見る。ここだけはモデル間で説明文の書き方がかなり違うため、前半の「回答全文Jaccard」とは対象を変え、3本のキャッチコピー本文だけを連結した文字列で3-gram Jaccardを計算した。したがって、前半の類似度の数字とは直接比較しない。

環境 temp=0 temp=0.7 temp=10
Qwen3.8 / Vulkan 0.172 0.141 0.033
Qwen3.8 / ROCm 0.108 0.171 0.040
Gemma4 31B / Vulkan 1.000 0.106 0.041

Gemma4のtemperature=0は3run完全一致だった。念のためllama-serverを再起動してもう1回試したが、その追加runも同じ文章、同じ278 tokenになった。ただし、以前に別のllama.cpp buildでGemma4を試した際はtemperature=0でも複数回の出力が一致しなかったので、「Gemma4ならtemperature=0で必ず完全再現できる」という意味ではない。build、backend、実装その他のどの差が効いたのかは未検証。

gemma4 temperature=0.7 フィルタありの最初の出力はこんな感じになった。同じ依頼をしてもGemma4の出力は今までと結構違っている。

gemma4temp0.7フィルタあり出力例.png

gemma4で、temperature=0で完全一致した3案は、

「失ったのは、人間としての姿か。それとも、信じていた自分か。」
「その自尊心は、あなたを高く上げる翼か、あなたを喰らう虎か。」
「月夜の咆哮。そこにいたのは、かつての友であり、一匹の獣だった。」

だった。Qwenで頻出していた「臆病な自尊心と尊大な羞恥心」をそのままコピーに入れず、切り口の作り方もかなり違う。

ROCm版llama.cppの方はモデルファイル自体はVulkan版と同じなので、Gemma4よりは出力が似ている気がするが、それでもVulkanの時とは微妙に違っている。以下はtemperature=0.7の出力例。
ROCM出力スクショtemp0.7フィルタあり.png

モデル / backendをまたいだ類似度

同じtemperatureで環境同士を比較した。
各temperatureに3runずつあるので、条件Aの3run × 条件Bの3run = 9ペアのJaccard係数を取り、その平均を「条件間類似度」とした。

temp Qwen Vulkan ↔ Qwen ROCm Qwen Vulkan ↔ Gemma4 Qwen ROCm ↔ Gemma4
0 0.101 0.037 0.042
0.7 0.144 0.029 0.066
10 0.030 0.016 0.025

temperature=0、0.7では、同じQwen3.8のVulkan / ROCm間の類似度が、QwenとGemma4の類似度より明らかに高かった。backendを変えると出力は変わるものの、今回のキャッチコピーでは、モデルそのものを変えた差の方が大きく見える。

temp=10では全部の値がかなり低くなり、モデル差・backend差よりも各回の違いが前面に出ている。

なお、Qwen3.8 / ROCmとGemma4 / Vulkanでも temperature=2 / top_k=0 / top_p=1 / min_p=0 を試したところ、どちらも完全崩壊した。
一方 temperature=10 / top_k=20 / top_p=0.95 / min_p=0.05 は、内容に怪しいところはあるが日本語としては読めた。「filterが効いていれば極端なtemperatureでも文章の外形が残り、filterなし高temperatureでは崩壊する」という大きな傾向は別モデルでも共通していた。

まとめ

今回いちばん意外だったのは、temperature=10でもfilterありなら文章の形がかなり残ったことだった。ログを追ってみると、今回のsampler chainではtemperatureが作用する前にtop_k / top_p / min_pで候補が絞られており、極端なtemperatureでも「何でもあり」にはなっていなかった。

逆に3つのfilterを外すと、Qwen3.8ではtemperature=1付近から異言語トークンなどの混入が目立ち、2では完全崩壊した。Gemma4でもtemperature=2 / filterなしで同じように崩れたので、少なくとも今回の2モデルでは大まかな傾向は共通していた。

また、temperatureを上げるほどキャッチコピーの文字列表現の多様性は増したが、それをそのまま「創造性が高くなった」とは感じなかった。変化の一部は面白い言い回しになる一方、別の一部は固有名詞の誤り、内容の取り違え、不自然な日本語、異言語トークンの混入として現れた。

正確性についても、「temperatureを下げれば正確」という単純な結果ではなかった。temperature=0でも本文を越えた推測や強い断定があり、逆にtemperature=1でより慎重に答えた質問もあった。

正確性についてはプロンプトの影響とthink/reasoningの影響が気になるが、これは機会があったら別記事にしたい。

付録

テスト用プロンプト

中島 敦「山月記」
の「テキストファイル(ルビあり)」を青空文庫からダウンロードして、文字コードをSJISからUTF-8に変換したファイルを添付ファイルとし、
「添付の文章のキャッチコピーを3パターン考えてください」
と依頼した。

モデル自体が内部知識として「山月記」に関する情報をある程度持っているようだったが、詳細を確認したら怪しい感じだったので、本文全文を添付する形にした。

「山月記」選んだ理由は、作品の内容は知っている人が多いと思うので、キャッチコピーだけ提示してもある程度分かってもらえるのではないか?ということから。

「キャッチコピー出力」を選んだのは、要約や内容に関する質問より出力にバラエティが出やすいのではないかと思ったから。

今回の実験で出力されたキャッチコピーはなかなか面白く、「臆病な自尊心と尊大な羞恥心」が頻出なのは予想通りだが、「人間をやめる勇気」とか「なぜ、我々は“虎”にならねばならなかったのか」とかトチ狂ったものもあるので、折り畳み式で全部載せてみる。

出力キャッチコピー全リスト

キャッチコピー全リストを開く

以下は説明文や「狙い」を除き、キャッチコピー本文だけを抜き出した一覧。明らかな完全崩壊や3案を完了できなかったrunは除外している。

1. filterなしでtemperatureのみ変更

temp top_k top_p min_p run キャッチコピー1 キャッチコピー2 キャッチコピー3 注記
0 0 1 0 1 「臆病な自尊心と尊大な羞恥心。その猛獣が、私を虎に変えた。」 「詩人になりそこねた男が、虎として吼える。空費された才能への、慟哭の詩。」 「人間だった記憶が消える前に、伝えたい。『我、李徴なり』と叫ぶ、魂の叫び。」
0 0 1 0 2 「臆病な自尊心と尊大な羞恥心。その猛獣が、あなたを虎に変える。」 「人間でいられる時間は、あとどれくらい? 記憶が土砂に埋もれる前に、叫べ。」 「月明かりの下、詩を遺すため、彼は虎となった。――才能という名の呪い。」
0 0 1 0 3 「臆病な自尊心と尊大な羞恥心。その猛獣が、あなたを虎に変える。」 「人間でいられる時間は、あとどれくらい? 記憶が土砂に埋もれる前に、叫べ。」 「成りそこなった詩人の魂は、月夜の山で吼える。――才能の代償は、孤独という名の虎。」
0.5 0 1 0 1 「臆病な自尊心と尊大な羞恥心。その猛獣こそ、私の『虎』だった。」 「才能を磨くことを恐れた男が、牙と爪で叫ぶ。人間だった記憶が消えゆくまでの、最後の詩。」 「『才能』という呪い。それは、人間を虎に変えるほど、重かった。」
0.5 0 1 0 2 「臆病な自尊心と尊大な羞恥心。その猛獣に、私は呑み込まれた。」 「才能を磨く勇気なき者へ、神は牙を与えた。」 「月光の下、詩を遺す男と、月を仰ぎ吼える虎。二つの魂が交錯する夜。」
0.5 0 1 0 3 「臆病な自尊心が、君を虎に変える。」 「人間だった記憶が消える前に、最後の詩を詠め。」 「月明かりの下、吼えるのは虎か、それとも詩人の魂か。」
0.7 0 1 0 1 「臆病な自尊心と、尊大な羞恥心。――その『虎』は、まだあなたの心の中にいる。」 「才能の不足を恐れる怠惰と、才能の過信。――悔やんでも、人は虎になる。」 「友人再会。その獣の声は、かつての詩人・李徴だった。」
0.7 0 1 0 2 「臆病な自尊心と尊大な羞恥心。その『猛獣』が、あなたを何に変える?」 「月を見上げ、咆哮する。詩人を失った男の、最も人間くさい悲鳴。」 「才能を磨くことを怠った代償は、想像を絶する孤独だった。」
0.7 0 1 0 3 「臆病な自尊心と尊大な羞恥心。その猛獣が、私の身体を虎に変えた。」 「才能は武器か、呪いか。磨かれなかった珠は、誰にも見られぬまま闇に消える。」 「人間でいられる最後の時間。記憶が消え、獣になる前に、願わくば詩を残させてくれ。」
0.85 0 1 0 1 「臆病な自尊心が、私を虎に変えてしまった。」 「その詩(うた)を残すため、私は人間であることを辞めた。」 「月を仰いで吼えるのは、悔悟か、それとも名残か。」
0.85 0 1 0 2 「臆病な自尊心が、君を『虎』に変える。」 「才を磨くことすら、恐れた男。その代償は、人の形を失うことだった。」 「月光の下、吼えるのは詩人の魂か、それとも獣か。」
0.85 0 1 0 3 「臆病な自尊心」と「尊大な羞恥心」が、私を獣に変える。 友に託したのは、詩の数行。消えゆく「人間」の最後の矜持。 才能に溺れ、孤独に狂い、虎になるまでの記録。
1 0 1 0 1 「あなたの『臆病な自尊心』は、今、何に成り果てようとしているか。」 「 Loncと月が見ていた、才能に溺れ、人間を捨てた詩人の最後の吐息。」 「怪物は、探していた。鏡の中に。」 copy2に「Lonc」混入
1 0 1 0 2 「臆病な自尊心と尊大な羞恥心。それは、最高の才能を殺した、見えない虎だった。」 「诗人になりそこね、虎になった男。消えゆく人間の心の中で、最後の詩を詠る。」 「本当の自分とは、誰にも見せられない醜い姿か、それとも公開を恐れた完璧な作品か。」 copy2に簡体字「诗」混入
1 0 1 0 3 「俺の中の“恥”が、俺を虎に変えた。」 「才能への執着は、魂をどこまで蝕むのか——」 「人間をやめた男が、最後に託した“30篇の詩”。」

2. temperature=1固定でfilter変更

temp top_k top_p min_p run キャッチコピー1 キャッチコピー2 キャッチコピー3 注記
1 20 1 0 1 「臆病な自尊心は、いつか虎になる。」 「虎に堕ちても、彼は詩を語った。」 「あなたは、誰の目にも見えない“虎”を飼っていないか?」
1 20 1 0 2 「尊大な羞恥心は、猛獣へと変わる。才能に囚われた男の、絶望と慟哭の物語。」 「才能への渇望と、平凡への恐怖。誰もが胸の奥に飼う『虎』と向き合う、永遠の寓話。」 「人だった記憶が、薄れていく恐怖—— 愛すべき怪物、李徴。」
1 20 1 0 3 「臆病な自尊心と尊大な羞恥心。その猛獣を飼った末路が、君を待っている。」 「月光冷ややかに、残月は白く光を失う。詩を捨て、虎となった友へ、最後の別れを告げよ。」 「今日爪牙誰敢敵――牙も爪も、かつては文筆で天下を争った誇りだった。」
1 0 0.95 0 1 「臆病な自尊心と、尊大な羞恥心――。 その葛藤が、俺を虎に変えた。」 「才华(さいぼう)は、血肉より重い。 詩人として生きることは、獣として死ぬことより残酷か。」 「月を見上げて吼えるべきか、名作を謳うべきか。 老いた虎が最後に見たのは、叶わぬ夢と、愛しい友だった。」 copy2に簡体字「才华」混入
1 0 0.95 0 2 「臆病な自尊心と、尊大な羞恥心。それは、人から虎へと姿を変える最も静かな狂気」 「才能への渇望、それとも、自分自身への嫌悪か。 虎の中で尚、消えぬ『詩人』の魂よ」 「友よ、初めて読んだ詩は、月夜の湯面の下に漂う、叫びなのか」
1 0 0.95 0 3 「その深すぎた矜持が、あなたを虎に変えた。」 「成し遂げられなかった詩篇は、咆哮という永遠の絶叫となる。」 「人間をやめる勇気。己の弱さを知る地獄。」
1 0 0.95 0 4 「臆病な自尊心と尊大な羞恥心――その『猛獣』を飼い殺した代償は、人間としての最後の日だった。」 「天才だったはずの俺は、なぜ才能に殺されたのか。――人生は何事をも為さぬには長すぎるが、何事かを為すには短すぎる。」 「月光の下、泣き崩れる虎の背中に、まだ愛すべき友人だった男を見出すか。――我々は皆、獣になる前に、一度だけ人間に戻る。」
1 0 1 0.05 1 「才能を磨かなかった怠惰と、傷つくことを恐れた臆病。 人は誰しも、内なる猛獣を飼い慣らせなければ、その姿に変わってしまう。」 「月夜に出会ったのは、かつての盟友か、それとも飢えた虎か。 人間であること、そして人として生きる覚悟。 全てを失った詩人が最後に遺す、魂の咆哮。」 「己の中の猛獣と、どう付き合うか。 中島敦が描く、自尊心という名の毒と、才能という名の呪い。」
1 0 1 0.05 2 「臆病な自尊心と尊大な羞恥心。 その猛獣が、あなたの内に吼えている。」 「才能に燃え、人間を失う。 月夜の草原に響く、一人の詩人の魂の咆哮。」 「友よ、見逃してくれ。 今、あなたに語りかけるその声は、虎の『人間』だ。」
1 0 1 0.05 3 「臆病な自尊心が、私を虎に変えた。」 「失踪した天才詩人は、なぜ“人食い虎”になったのか?」 「才能を持たないことより、才能を磨かないことが、人間を獣に変える。」
1 20 0.95 0.05 1 「臆病な自尊心と、尊大な羞恥心。その猛獣が、あなたの中にいる。」 「人間だった記憶が消えゆく恐怖。詩を残し、虎となる。」 「朝、月を見上げて咆哮する。それは、かつての友の声か、それとも獣の声か。」
1 20 0.95 0.05 2 「臆病な自尊心と尊大な羞恥心、その“猛獣”が、僕を人喰い虎に変えた。」 「才能という名の牢獄。磨き続けた詩心は、月夜の荒野で吼えるしかなかった。」 「誰しも心の中に虎を飼っている。忘れたくない過去と、消えてゆく人間性。」
1 20 0.95 0.05 3 「臆病な自尊心と尊大な羞恥心。その“猛獣”を飼い慣らさなければ、あなたはいつか、虎になる。」 「名を残すため、己を殺した。才能を磨く勇気を持たなかった男が、最後に残したのは、血の匂いと、絶望の詩だった。」 「なぜ、我々は“虎”にならねばならなかったのか。理由なき運命を突きつけられた時、人は、人間であることの恐怖を知る。」

3. temperature=1.1固定でfilter変更

temp top_k top_p min_p run キャッチコピー1 キャッチコピー2 キャッチコピー3 注記
1.1 20 1 0 1 「尊大なる羞恥心は、虎に姿を変える。」 「人間でなくなる恐怖よりも、忘れ去られる恐怖を選べばいい。」 「かつての友人、そして月。すべてを狂わせるほどの才能への渇望。」
1.1 20 1 0 2 臆病な自尊心と尊大な羞恥心――。 その「猛獣」を飼いならせぬ者へ。 詩人として死のうとした男は、虎として生きる。 才能の重みと、孤独の慟哭。 "人間"はどこへ消えた? 虎の皮に潜む、もう一人の自分。
1.1 20 1 0 3 「臆病な自尊心と尊大な羞恥心、二つの“猛”が自分を食い殺す——。」 「才能を磨かなかった怠惰か、才能を誇った傲慢か。人生は“何事も為さぬ”には長すぎ、“何事か”のためには短すぎた。」 「まだ“人間”でいられる最後の時間。獣へと堕ちていく恐怖と、詩を残したいという、あまりに人間臭い執着。」
1.1 0 0.95 0 2 「誇りと羞恥心が生んだ、私のための地獄。」 「月を仰ぎ、吼えるのは、詩人の名前か、それとも獣の本能か。」 「才能を忘れたとき、人は最も人間らしくなり、最も獣に近づく。」 run1は崩壊のため除外
1.1 0 0.95 0 3 「狂気は何処から来る? 臆病な自尊心と、尊大な羞恥心という名の虎」 「才能という重い十字架を背負い、人は獣へと堕ちた」 「かつての親友は、月夜の下、人を喰う虎になっていた」 run1は崩壊のため除外
1.1 0 1 0.05 1 「臆病な自尊心が、私を獣に変えた」 「月光を背に咆哮する。人間を捨てきれない虎の、最後の詩」 「会いたかった友人も、襲わねばならぬ運命。――これは、才能への呪いか、救済か。」
1.1 0 1 0.05 2 「臆病な自尊心と尊大な羞恥心。その『猛獣』に、あなたは飲み込まれていないか?」 「才能を磨けず、虎となった男。忘れ去られゆく「人間」の記憶と、消えない詩の魂。」 「人間と獣の狭間で叫ぶ。――「なぜ、こんな運命になったのか」と問う前に、自分の「性情」を見よ。」
1.1 0 1 0.05 3 「臆病な自尊心と、尊大な羞恥心。 その二つの猛獣が、私を『人』から『虎』へと変えていく。」 「才能を磨くことを恐れ、凡庸な幸福を拒んだ。 その結末は、名もない獣としての狂気か、それとも――。」 「人間であることは、いつまで許されるのか。 消えゆく記憶、埋もれていく『私』。 獣になる前の、最後の詩。」
1.1 20 0.95 0.05 1 「臆病な自尊心と尊大な羞恥心。それが僕を、虎に変えた。」 「友よ、逃げないでくれ。それは、かつての『僕』だ。」 「人間であった時より、虎になってから初めて、僕は人間であることを知った。」
1.1 20 0.95 0.05 2 「臆病な自尊心と尊大な羞恥心。その二つの猛獣が、人を虎に変えた。」 「才能の不足を恐れるあまり、才能を空費した男。詩を残し、虎に消える。」 「人間から遠ざかれば、獣に近づく。忘れるほど幸福になる、記憶という呪い。」
1.1 20 0.95 0.05 3 「臆病な自尊心と尊大な羞恥心、その『猛獣』が、僕を『虎』に変えた。」 「才能を磨かぬ怠惰と、名声を望む傲慢。人間でいられる時間は、あとどれくらい?」 「月明かりの下、爪と牙で吼えるのは、虎なのか、それとも未熟な詩人の魂か。」

4. 参考:今回扱った4パラメータをQwen推奨値に設定

temp top_k top_p min_p run キャッチコピー1 キャッチコピー2 キャッチコピー3 注記
0.7 20 0.8 0 1 「臆病な自尊心と尊大な羞恥心。その“猛獣”が、あなたを虎に変える。」 「才能の不足を恐れて磨けなかった詩。その悔悟は、月光の下で吼える虎の叫びとなる。」 「人間でなくなる恐怖。それは、記憶が風化する宮殿の礎のように、静かに、しかし確実に訪れる。」
0.7 20 0.8 0 2 「臆病な自尊心と尊大な羞恥心。その“猛獣”は、誰の心にも潜んでいる。」 「人間であることへの執着が、人間であることをやめさせる。――魂が獣に侵食されるまでの、あまりに残酷な告白。」 「爪牙(そうが)で詩を綴る。才能という名の呪いを背負い、月夜の下で吼える男の、最後の美学。」
0.7 20 0.8 0 3 「臆病な自尊心と、尊大な羞恥心。 その猛獣を飼いならせなかった男の、魂の叫び。」 「才能を磨くことを怠り、 虎へと堕ちた詩人。 忘れることへの恐怖が、彼を最も人間らしく、そして最も獣らしくさせる。」 「詩人として名を遺すか、虎として生き延びるか。 ――それは、選べなかった運命だった。」

5. モデル / backend比較用:filterありでtemperatureを変更

比較しやすいよう、既存の Qwen3.8 / Vulkantemperature=0 / 0.7 / 10 もここに再掲し、今回追加した Qwen3.8 / ROCmGemma4 31B / Vulkan を並べた。

  • いずれも top_k=20 / top_p=0.95 / min_p=0.05
  • Qwen3.8 / Vulkan は初期実験の既存出力を再利用。
  • Gemma4 の temperature=0 は3runが完全一致し、さらに llama-server 再起動後の追加1runも同一出力だった(追加1runは表のrun数には含めない)。
  • temperature=2 / top_k=0 / top_p=1 / min_p=0 は Qwen3.8 / Vulkan、Qwen3.8 / ROCm、Gemma4 のいずれも完全崩壊したため、キャッチコピー表からは除外。
環境 temp top_k top_p min_p run キャッチコピー1 キャッチコピー2 キャッチコピー3 注記
Qwen3.8 / Vulkan 0 20 0.95 0.05 1 「臆病な自尊心と尊大な羞恥心。その猛獣が、あなたを虎に変える。」 「才能を磨く勇気なき者へ。人生は、何事をも為さぬには長すぎる。」 「月を仰ぎ、吼えるのは虎か、それとも詩人か。消えゆく人間性の最後の叫び。」
Qwen3.8 / Vulkan 0 20 0.95 0.05 2 「臆病な自尊心と尊大な羞恥心。その猛獣が、あなたを虎に変える。」 「人間でいられる時間は、あとどれくらい? 記憶が土砂に埋もれる前に、叫べ。」 「月を仰ぎ、爪牙を隠して。友よ、どうか私の醜い姿を、詩だけを残して覚えていてくれ。」
Qwen3.8 / Vulkan 0 20 0.95 0.05 3 「臆病な自尊心と尊大な羞恥心。その猛獣が、私を虎に変えた。」 「詩に生き、詩に狂い、虎に堕ちた。才気あふれる男の、最も残酷な運命。」 「人間だった記憶が消える前に、叫べ。――それは、誰にも理解されない孤独の咆哮だ。」
Qwen3.8 / Vulkan 0.7 20 0.95 0.05 1 「臆病な自尊心と尊大な羞恥心。その『猛獣』が、君を虎に変える。」 「月を仰ぎ、咆哮する。人間だった記憶が、獣の皮の下で泣いている。」 「才能を磨くことを恐れた男。空費された人生の代償は、あまりにも残酷だ。」
Qwen3.8 / Vulkan 0.7 20 0.95 0.05 2 「臆病な自尊心と、尊大な羞恥心。それは、あなたの中に眠っている“猛獣”ではないか?」 「才能に潰え、獣に堕ちた詩人。消えゆく“人間”の記憶を、今、叫び出す。」 「人生は何事をも為さぬには余りに長いが、何事かを為すには余りに短い。」
Qwen3.8 / Vulkan 0.7 20 0.95 0.05 3 「臆病な自尊心と尊大な羞恥心。その『猛獣』が、私を虎に変えた。」 「才能を磨く勇気も、俗世に耐える根性もなかった男の、最も残酷な結末。」 「月を仰ぎ、吼える。人間でいられなくなった友への、最後の鎮魂歌。」
Qwen3.8 / Vulkan 10 20 0.95 0.05 1 「臆病な自尊心」と「尊大な羞恥心」。才能の裏に潜む「虎」は、いつの時代も僕たちの心に棲んでいる。——中島敦が描く、自己嫌悪の究極形態。 「この身が虎になっても、俺の詩を、まだ見ぬ読者の手元へ。」愛する者より、書きかけの詩篇を気遣った男。悔悟の果てに残る、30篇の断片と一匹の猛獣の慟哭(どうこく)。 夜露を濡らし、月に吼える。かつて進士の座にあった男は、獣となることで初めて、「人」を悟った。青空に響くのは、叫びか、それとも絶えぬ嘆きか。——永遠の傑作「山月記」
Qwen3.8 / Vulkan 10 20 0.95 0.05 2 「己の中の猛獣、見殺しにしますか? ——臆病な自尊心が生んだ、哀切極まる人虎譚」 「月夜の林に咲きし、才の名残。——」「忘れることの叶わない『詩』を、虎は吼えた」 「才能が不足していたのか。それとも、磨くことを怖れたか。——虎になって初めて気づく、人生の『取り返しがつかない』後悔」
Qwen3.8 / Vulkan 10 20 0.95 0.05 3 「虎に変えたのは、世界じゃない。君の“臆病な自尊心”だ」 「才能に気づかなかった者へ、最期の吼えを。──失われた人生への、唯一無二のレクイエム」 「名を遺したいか。なら、己の中の“虎”と戦え。——愛しすぎるあまり、孤独を選ぶ者たちの物語」
Qwen3.8 / ROCm 0 20 0.95 0.05 1 「臆病な自尊心が、あなたを虎に変える。」 「人間であること、それは最も残酷な呪いかもしれない。」 「月明かりの下、吼えるのは詩人の魂か、それとも獣か。」
Qwen3.8 / ROCm 0 20 0.95 0.05 2 「臆病な自尊心が、人を虎に変えた。」 「月明かりの下、爪牙(そうが)で詩を詠む。才能の代償は、人間を失うことだった。」 「才能は、磨くか、腐らせるか。――李徴が虎になるまでの、静かな狂気。」
Qwen3.8 / ROCm 0 20 0.95 0.05 3 「臆病な自尊心が、私を虎に変えた。」 「人間でなくなる前に、詩を残したい。――才能に狂い、運命に呑まれた男の慟哭。」 「我々は何者か。忘れたくない記憶と、消えていく魂の物語。」
Qwen3.8 / ROCm 0.7 20 0.95 0.05 1 「臆病な自尊心と、尊大な羞恥心。それは、虎へと変わる前に、誰にも見せない弱さだった。」 「名門出身の詩人、李徴は失踪した。翌朝、山奥で見つかったのは、人間だった記憶を残す一匹の虎だった。」 「月明かりの下、爪先で記すのは、消えゆく人間としての記憶か。それとも、獣へと堕ちていく絶望か。」
Qwen3.8 / ROCm 0.7 20 0.95 0.05 2 「臆病な自尊心と、尊大な羞恥心。その猛獣こそが、あなたを虎に変える。」 「月に吼えるのは、虎か、それとも、人間だった記憶か。」 「才能を磨くことを恐れた男が、最後に遺した詩は、誰のためのものだったか。」
Qwen3.8 / ROCm 0.7 20 0.95 0.05 3 「臆病な自尊心と尊大な羞恥心。それが、あなたを虎に変える。」 「才能を磨くことを怠った代償は、人間性を失うことだった。」 「月光に仰ぎ見る、爪牙の詩人。忘れ去られる恐怖と、最後の詩。」
Qwen3.8 / ROCm 10 20 0.95 0.05 1 「臆病な自尊心が、人間を猛獣に変える」 「人喰虎となった男の、詩を残そうとする最後の抵抗」 「忘れたくない、と叫ぶ。己の中の“人間”が消えていく前に。」
Qwen3.8 / ROCm 10 20 0.95 0.05 2 「臆病な自尊心が、俺を虎に変えた。」 「名高い詩人は、夜明けと共に猛獣となった。」 「故郷から帰る者へ警告。その道に、友はいない。」 見出し等に中国語混入あり
Qwen3.8 / ROCm 10 20 0.95 0.05 3 「そのプライドは、才能を育てたか。それとも、己を喰らい尽くした虎に成り果てたか。」 「残月は冷やかに。かつての盟友との対話は、人間の心が獣性に侵されるまでの最後の余白であった。」 「愛する者の記憶が消え果てる前に、請う。――詩を、遺稿を、どうかこの世に残してほしい。」
Gemma4 31B / Vulkan 0 20 0.95 0.05 1 「失ったのは、人間としての姿か。それとも、信じていた自分か。」 「その自尊心は、あなたを高く上げる翼か、あなたを喰らう虎か。」 「月夜の咆哮。そこにいたのは、かつての友であり、一匹の獣だった。」 3run完全一致
Gemma4 31B / Vulkan 0 20 0.95 0.05 2 「失ったのは、人間としての姿か。それとも、信じていた自分か。」 「その自尊心は、あなたを高く上げる翼か、あなたを喰らう虎か。」 「月夜の咆哮。そこにいたのは、かつての友であり、一匹の獣だった。」 同上
Gemma4 31B / Vulkan 0 20 0.95 0.05 3 「失ったのは、人間としての姿か。それとも、信じていた自分か。」 「その自尊心は、あなたを高く上げる翼か、あなたを喰らう虎か。」 「月夜の咆哮。そこにいたのは、かつての友であり、一匹の獣だった。」 同上
Gemma4 31B / Vulkan 0.7 20 0.95 0.05 1 「誇り高く、孤独に吼える。虎になった男が、最後に遺した絶望と後悔。」 「その自尊心は、あなたを救うか、それとも怪物に変えるか。」 「親友がいたのは、虎の姿だった。月夜に明かされる、ある天才の転落劇。」
Gemma4 31B / Vulkan 0.7 20 0.95 0.05 2 「失ったのは人間としての姿か、それとも、信じていた自分か。」 「その咆哮は、絶望か。それとも、誰にも届かない叫びか。」 「誇り高く、孤独に。才能という名の檻に囚われた男の末路。」
Gemma4 31B / Vulkan 0.7 20 0.95 0.05 3 「月夜に吼えるのは、かつて人間だった者の絶望と後悔。」 「誇り高く、臆病だった。その自尊心が、私を獣に変えた。」 「親友が再会したのは、人喰い虎となったかつての天才だった。」
Gemma4 31B / Vulkan 10 20 0.95 0.05 1 「誇り高く、孤独に、私は獣になった。」 「かつての親友を、私は食らおうとした。」 「あなたの心に潜む虎を、飼いならしているか。」
Gemma4 31B / Vulkan 10 20 0.95 0.05 2 「月に吠え、絶望に泣く。人間であった記憶さえ消えゆく、孤独な虎の告白。」 「その矜持は、才能か。それとも、猛獣か。自尊心という名の檻に囚われた男の末路。」 「再会したのは、親友ではなく、人喰い虎だった。」
Gemma4 31B / Vulkan 10 20 0.95 0.05 3 「才能という名の猛獣に、私は食い尽くされた。」 「親愛なる友よ、今の私は、虎である。」 「人間でいることは、なんと脆(もろ)く、尊いことか。」

除外した主なrun

条件 理由
filterなし / temp=1.05 前半は読めたが途中から崩壊し、3案を正常完了できなかった
filterなし / temp=1.1 半壊~完全崩壊。再試行でも長大な異常生成
filterなし / temp=1.2, 1.5, 2.0 明確な完全崩壊
temp=1.1 / top_p=0.95 / run1 1案目後の説明から大きく崩れ、3案を完了できなかった
Qwen3.8 / ROCm / filterなし / temp=2.0 明確な完全崩壊。WebUIのSTOPで停止後、serverは待受状態に復帰
Gemma4 31B / Vulkan / filterなし / temp=2.0 明確な完全崩壊。『山月記』など文脈の残骸は一部残るが、3案として成立せず手動停止

llama-server起動コマンド

.\llama-server.exe `
  -m (モデルのパス) `
  -c $c `
  -ngl 999 `
  -ncmoe 0 `
  -t 4 `
  -tb 4 `
  -b 2048 `
  -ub 1024 `
  -fa auto `
  -ctk f16 `
  -ctv f16 `
  --reasoning off `
  --jinja `
  --parallel 1 `
  --host 0.0.0.0 `
  --port 8080 `
  --sleep-idle-seconds -1 `
  -fit off `
  --load-mode auto `
  --cache-ram 0 `
  --no-cache-prompt `
  --ctx-checkpoints 0t `
  -lv 4 `
  --samplers "top_k;top_p;min_p;temperature"

※複数回同じプロンプトを繰り返して出力の多様性を見たかったので、関係があるか分からないが念のためキャッシュはオフにした。その影響で複数ターンのチャットは普段よりすごく時間がかかった。

※top_k=0、top_p=1.0、min_p=0設定後の実験を分かりやすくするため、llama-serverの起動オプションに --samplers "top_k;top_p;min_p;temperature"を入れて、sampler chainを top_k → top_p → min_p → temperature の4つだけに限定した。
念のため、temperature=10,top_k=20、top_p=0.95、min_p=0.05で再度確認したところ、--samplers "top_k;top_p;min_p;temperature"なしのときと同じように比較的まともな文章が出力されることを確認した。

詳細な検証環境

Hardware

  • Device: NucBox_EVO-X2
  • CPU / APU: AMD Ryzen AI MAX+ 395 with Radeon 8060S
  • CPU clock displayed by Windows: 3.00 GHz
  • Installed memory: 128 GB
  • Windows usable memory: 63.6 GB
  • UMA Frame Buffer: 64 GB
  • GPU: AMD Radeon 8060S Graphics
  • Storage: 1.82 TB total / 732 GB used / 約1.09 TB free

OS

  • OS: Windows 11 Pro
  • Version: 25H2
  • OS Build: 26200.9168
  • Installed: 2025-10-24
  • Windows Feature Experience Pack: 1000.26100.344.0

AMD GPU driver

  • AMD Software: Adrenalin Edition 26.8.1 WHQL Recommended

llama.cpp

  • b10919: Windows x64 Vulkan プリビルド

Windows版プリビルドについて
今回使用した llama-b10919-bin-win-vulkan-x64.zip は、筆者の環境ではダウンロード時にWindows Defenderから Trojan:Script/Wacatac.H!ml として検出された。
ダウンロードしたZIPのSHA-256は 318500010bbd20b781e9523a78ae496fa64b4f5bf3d892cb2b124a5193076303 で、GitHubが公開しているb10919のattestationに記載されたWindows x64 Vulkan版のSHA-256と一致。
過去のllama.cpp Windows版でも同系統の検出報告がある、これをもって今回の検出が誤検知であると保証するものではない。利用する場合は各自で判断してください。

比較対象用llama.cpp

  • b10919: Windows x64 ROCm 10.0 プリビルド

HIP SDK

  • HIP SDK: 7.2.60201-38d754472
  • HIP compiler: clang 21.0.0git
  • HIP target: gfx1151

使用したモデル

比較対象用モデル

Gemma 4 31B

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?