require 'net/http'
require 'uri'
require 'json'
def speak(text, speaker)
puts text, speaker
uri = URI.parse("http://localhost:50021/audio_query")
uri.query = URI.encode_www_form({ "text" => text, "speaker" => speaker })
headers = {
"Content-Type" => "application/json",
"User-Agent" => "vox-client:0.1",
}
response = Net::HTTP.post(uri, "", headers)
case response
when Net::HTTPSuccess
result = JSON.parse(response.body)
# puts result
else
puts "audio query error: #{response}"
end
uri = URI.parse("http://localhost:50021/synthesis")
uri.query = URI.encode_www_form({ "speaker" => speaker })
response = Net::HTTP.post(uri, response.body, headers)
if response.code == '200'
File.open("output#{speaker}.wav", "wb") do |f|
f.write(response.body)
end
else
puts "synthesis response error"
end
end
query_text = "あなたの名前はなんですか"
uri = URI.parse("http://localhost:11434/api/generate")
http = Net::HTTP.new(uri.host, uri.port)
params = { model: "gemma3:4b", stream: false, prompt: query_text }
request = Net::HTTP::Post.new(uri.path)
request["Content-Type"] = "application/json"
request.body = params.to_json
speak(query_text, 1)
response = http.request(request)
case response
when Net::HTTPSuccess
result = JSON.parse(response.body)
else
puts "ollama error: #{response.code} #{response.message}"
end
speak(result['response'] .strip, 2)
system("powershell -ExecutionPolicy Bypass -command .\sound.ps1")
venv
やっと venv がわかってきた。
python3 -m venv venv
venv/bin/pip install fastapi uvicorn ollama
python3 で venv してから venv/bin のコマンド(pipとかpython3なども)を使うということやね。わかりにくすぎる。
bin/uvicorn main:app –reload
この uvicorn というのが python3 から起動する httpサーバーらしい。main.py から fastapi を呼ぶ。
uvicorn は localhost (127.0.0.1) からアクセスできるが外に公開するには apache2 の ProxyPass を使った方がよさげである。
a2enmod proxy
a2enmod proxy_http
systemctl restart apache2
journalctl -xeu apache2
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off
ProxyPass “/api/” “http://127.0.0.1:8000/”
ProxyPassReverse “/api/” “http://127.0.0.1:8000/”
やっとここまではきた。次に api サーバーから ollama を呼ぶところだな。
usermod -aG docker kelvint
newgrp docker
docker ps
docker pull ghcr.io/open-webui/open-webui:ollama
nmcli con up “プロファイル 1”
nmcli con show
nmcli con modify “プロファイル 1” connection.id “eth0”
apt install mozc-utils-gui
nmcli con mod “eth0” ipv4.method manual ipv4.addresses “192.168.197.214/24” ipv4.gateway “192.168.197.254” ipv4.dns “192.168.18.11,192.168.222.1”
nmcli connection up eth0
nmcli device
nmcli connection modify eth0 connection.autoconnect yes
docker ps
docker pull ghcr.io/open-webui/open-webui:ollama
docker run -d -p 8080:8080 –gpus=all -v open-webui:/app/backend/data -v open-webui-ollama:/root/.ollama –name open-webui ghcr.io/open-webui/open-webui:ollama
docker start open-webui
日本の漢詩おすすめ
ollama + open webui + DeepSeek-R1
日本人が作った漢詩でおすすめのものがあれば教えてください。
日本人の漢詩の中でも特に有名な作品として、松尾芭蕉(1644-1694)の作品が挙げられます。芭蕉は俳諧の巨匠であり、漢詩にも多くの作品を残しています。特に「月夜」と題された作品が有名で、簡潔ながらも深い意境を持っています。
また、高田乡南(1669-1738)の『秋の夜』もおすすめです。彼女の作品は、日本の女性作家として非常に独自のスタイルを持ち、特に秋の夜を描いた漢詩で、日本の風景や季節感を独自の視点で表現しています。
日本語の漢詩は、中国古典詩の影響を受けていますが、日本の文化的背景や自然観を反映した独自のスタイルを持っています。日本での漢詩の発展は、和歌山漢詩会などのグループによって促進されており、多くの著名な詩人が参加していました。
日本語の漢詩は、中国の古典詩の形式を保ちつつも、日本の文化や自然を独自の視点から表現した作品が多く、その独自性が魅力です。
芭蕉の「月夜」について紹介してください。
松尾芭蕉の漢詩「月夜」は、彼の作品の中で特に代表的なものの一つです。
月夜
月明るき夜
人は一人や
二ふさ
(月明るき夜、人は一人や二ふさ)
解説
この詩は、文字数や韻の取り方に古典的な中国詩の形式に従っていますが、芭蕉の独自の詩歌観と世界観が感じられます。
解釈
- 月明るき夜 – 「月は明るい夜」という意を表し、「月明るき」は形容詞、「夜」は名詞として用いられています。芭蕉の漢詩では、形式的には中国語の文法に従いますが、内容は日本の風景や四季の移ろいを捉えています。
- 人は一人や – 「人は一人か」と尋ねる形で、読者に想像を促します。「や」は係助詞で、疑問形に用いられることもあります。
- 二ふさ – 「二(に)ふさ」となり、文字数で句読を決める古典詩の形式に従っています。「ふさ」とは「二」という漢数字を表すもので、句読(音節)を示しています。
詩の深み
芭蕉の漢詩は、表面的な意味だけでなく、言外の意図が感じられます。「月明るき夜」に対して「人は一人や」と問いかけ、読者に情景を想像させることで、詩の世界を広げようとしています。これは芭蕉の創作スタイルの特徴でもあり、彼の俳諧(とくしては狂句)における「季題」という概念とも相通じるものです。
芭蕉の漢詩は、形式的には中国古典詩に近いものの、芭蕉特有の眼差しと感受性を帯びていて、日本の自然観と時間感覚を表現しています。彼の作品は簡潔でありながらも、読者に深い想像を引き起こすことで、詩の持つ可能性を探求していると言えるでしょう。
芭蕉の漢詩を深く理解するには、彼の全作品を読み、彼が漢詩に対して持っていた情熱と才能をじっくり味わうことが大切です。
高田乡南とはどんな人ですか。江戸時代の人ですね?
はい、高田乡南(たかしおうな)は、江戸時代の女性詩人です。
- 生没: 1669年(寛文10年) – 1738年(元禄31年)没。
- 出身: 江戸(現在の東京)の高田区周辺で育ちました(故郷が高田から来ているため、通称が高田乡南、高田南氏)。お相手はお中将(中納言)・高田亲治の娘で、女性の学問や芸事に力を注ぐ家庭に生まれました。
- 活躍分野: 汉诗(かんし)、和歌、尺八など。
- 特徴: 明治時代の女流文学研究者・上野寛(1930年代没)によって再発見され、その才能と作品が注目されるようになりました。男性中心の文芸界隈(ぶんげい)で、男性詩人たち(例えば松尾芭蕉、上村松庵、山田东鱼、中村草上など)と共に活発に诗の交流をしていた点が特筆すべきです。
- 代表作: 汉诗の「秋の夜」(秋の夜)や「竹」(かさか)などがあります。彼女の作品は、芭蕉とは少しスタイルが異なるものの、非常に洗练(せんれい)されており、女性の感受性や独自の世界観が感じられます。
- 文学グループ: 汉诗グループ(和歌山汉诗会など)の活动に加わり、诗の鉴赏や创作を精力的に行いました。彼女の诗は、芭蕉の「季题」的な捉え方とは少し异なり、より普遍的な美や自然の移ろい、あるいは女性的な感情を诗に織り交ぜたものとも言えます。
高田乡南は、江戸時代の女性の中で稀有(きゆう)な文学的才能を示した人物であり、汉诗や和歌の世界に新たな息吹(いきぶね)を吹き込んだ存在として、文学史上重要な地位を占めています。
日本人が漢詩を作れるようになるにはどんな勉強をすれば良いですか。
日本人が漢詩(かんし)を書けるようになるための勉強方法は、中国語の能力と日本語で学ぶ古典文学の知識を組み合わせることが重要です。以下に、段階を追っての学習方法を提案します。
1. 中国語の基礎力の習得
漢詩は、中国語の古典的な文法や言語体系に基づいています。まずは中国語の基本的な力を身につける必要があります。
① 中国語の文字と常用漢字の理解
- 漢詩は、主に常用漢字(常用漢字表で定められた約2000字)で書かれます。日本語で使われる漢字の多くは、中国語の常用漢字に対応していますが、読み方や意味が異なる場合があります。
- おすすめ教材:
- 中国語学習用の教科書(例: 『新実用中級汉语教程』)
- 中国語の常用漢字表を参照し、漢字の正しい読み方と意味を学ぶ。
② 中国語の文法と句読(きょく)
- 漢詩は、音節(ふさ)で区切られ、一行の文字数が固定されています(絶句は5・7・5・7・7、律詩は5・8・5・8・5・8・5・8など)。
- 中国語の文法は日本語とは異なり、主語・述語・目的語の配置が異なるため、文構造を理解する必要があります。
2. 漢詩の基本ルールを学ぶ
① 韻と韻脚
- 漢詩の最も重要なルールの一つは韻の調和です。一行の末尾の音が同じ(または同音異訓など)になるようにします。
- おすすめ教材:
- 徐炎松『漢詩入門』(日本語版あり)
- 中国語の韻脚表(例:《平水韵》)を理解する。
② 句読(きょく)と断句
- 漢詩は、文字数で句読が決まるため、音節の配置に注意します。
- 例:
- 絶句(5・7・5・7・7)
- 律詩(5・8・5・8・5・8・5・8)
③ 主題と意象
- 漢詩は自然や人生の哲学を題材にし、四季や花鳥風月などの意象が多用されます。
- おすすめ教材:
- 中国古典文学の解説書(例: 『中国文学の読み方』)
- 中国古典文学の代表作(李白・杜甫の詩集など)を読む。
3. 現地で学ぶ・実践する
① 中国語圏で学ぶ
- 中国語の環境で生活し、中国古典文学を実際に読むことで、語感を養うことができます。
② 漢詩の創作グループに参加する
- 中国語が話せる詩人や漢詩愛好家と交流し、創作のノウハウを学びます。
- オンラインで詩会(例: 詩の会・吟社など)に参加するのも有効です。
4. 推奨の教材・リソース
日本語で学ぶ場合
- 入門書:
- 『漢詩の書き方』(上野寛・小林満夫)
- 『中国古典詩の読解法』(吉川弘忠)
- 参考書:
- 『中国語古典文学読本』(人民文学出版社)
- 『漢詩創作のための中国語文法入門』
中国語で学ぶ場合
- 中国語の漢詩入門書(例: 徐炎松『漢詩創作教程』)
- 中国古典詩の原文と翻訳が記載された辞典(例: 『全唐詩』)
5. 実践的なアプローチ
- 短歌や俳句から始める: 日本の短歌・俳句は漢詩の原型に近く、音節や韻を意識する習慣があります。
- 現代の中国語と漢詩の違いを理解する: 現代の中国語と古典漢詩は、文法や語彙が異なるため、中国語の歴史的な変化を学ぶことも重要です。
まとめ
- 中国語の常用漢字と文法を学ぶ。
- 韵と句読のルールを理解する。
- 主题と意象を研究し、古典文学を読む。
- 中国語圏で学んだり、诗会に参加して実践する。
漢诗は、中国語の文法や音韻のルールが複雑ですが、段階を追って学ぶことで、徐々に創作の感覚を身につけることができます。
山形有朋が伊藤博文に詠んだ歌
ollama + open-webui + gemma3:27b
伊藤博文が暗殺されたときに山県有朋が詠んだ歌について教えてください。
伊藤博文公が1909年(明治42年)にハルビンで暗殺された際、山県有朋は以下の歌を詠んでいます。
「ああ友よ 帝に仰ぎて 死を観る 白き髪の 我に託せ」
この歌は、伊藤博文の死を悼み、彼が国家のために尽くした人生と、その遺志を受け継がなければならないという強い決意を表しています。
- 「友よ」:伊藤博文との長年の親交と、深い友情を表現しています。
- 「帝に仰ぎて」:伊藤博文が天皇陛下への忠誠を誓い、国家のために尽くしたことを示しています。
- 「死を観る」:伊藤博文の突然の死に対する衝撃と悲しみを表しています。
- 「白き髪の 我に託せ」:自身の老いた姿を自覚しつつ、伊藤博文の遺志を受け継ぎ、残された者が責任を負うことを決意しています。
この歌は、伊藤博文の死を悼む山県有朋の深い悲しみと、国家への責任感、そして伊藤博文の遺志を継承する決意が込められたものとして知られています。
参考文献として、以下のウェブサイトもご参照ください。
- 近代日本人が詠んだ歌 – 吟詠連句・漢詩・和歌 – 日本史研究室: https://www.nihon-shi.net/kinkinda/kinkinda_08_04.html
- 山県有朋 – Wikipedia: https://ja.wikipedia.org/wiki/%E5%B1%B1%E7%94%B0%E6%9C%9D%E5%90%88
ご参考になりましたでしょうか。
ちなみに有朋が実際に詠んだ歌は次のものである。
かたりあひて 尽しし人は 先立ちぬ 今より後の 世をいかにせむ
木留山
ollama + open-webui + gemma3:27b
山県有朋が遺した和歌や漢詩についてどう思いますか。
山県有朋は、明治時代を代表する政治家、軍人として知られていますが、実は和歌や漢詩にも造詣が深く、多くの作品を残しています。彼の和歌や漢詩については、以下のような点が評価できます。
和歌について
- 格式を重んじる古典的な趣: 山県の和歌は、新古今調を基調とし、典雅で格調高いものが多く見られます。明治維新という激動の時代にあっても、古典的な歌風を守り続けた姿勢は、保守的な気質を反映しているとも言えます。
- 自然や歴史を題材とした深み: 彼の和歌には、自然の美しさや歴史上の出来事を題材としたものが多く、深い情感や思索が込められています。特に、故郷の風景や自身の経験を詠んだ歌は、彼の人間性を垣間見ることができます。
- 漢詩の影響: 漢詩に親しんでいた山県は、和歌にも漢詩的な要素を取り入れています。これは、彼の教養の深さを示すとともに、和歌に新たな表現の可能性をもたらしたと言えるでしょう。
漢詩について
- 優れた漢詩の素養: 山県は、漢詩の才能にも恵まれ、多くの漢詩を残しています。その漢詩は、古典に則りつつも、洗練された技巧と独特の趣を兼ね備えています。
- 政治思想や人生観の反映: 漢詩には、彼の政治思想や人生観が色濃く反映されています。例えば、国を憂う気持ちや、武士としての信念を詠んだ漢詩は、彼の内面を深く理解する上で貴重な資料となります。
- 国際的な視野: 山県は、遣欧使節団の一員として欧米を視察しましたが、その経験から得た国際的な視野も漢詩に表れています。西洋の文化や思想を取り入れ、新たな価値観を創造しようとする姿勢は、彼の進歩的な一面を示しています。
総評
山県の和歌や漢詩は、単なる趣味の域を超え、彼の教養、思想、人間性を表現する重要な手段であったと言えます。彼の作品は、明治時代の知識人の精神世界を知る上で貴重な資料であり、文学史においても一定の評価を受けるべきでしょう。
ただし、彼の作品は、現代の読者にとっては、やや難解に感じられるかもしれません。そのため、古典文学や漢詩に関する知識があると、より深く理解することができます。
もし具体的な歌や漢詩について知りたい場合は、作品名を教えていただければ、詳細な解説を試みます。
木留山の歌などはどうでしょうか。
山県有朋の「木留山(きどめやま)の歌」ですね。これは彼の和歌の中でも特に有名で、多くの人に親しまれている作品です。
木留山(きどめやま)の歌
木留山 ふるさとの山よ 仰ぎ見る 雲間に光る 故郷(ふるさと)の空
この歌は、山県の故郷である木留山(現在の群馬県高崎市)を仰ぎ見て、故郷を懐かしむ気持ちを詠んだものです。以下に、この歌のポイントを解説します。
- 簡潔で力強い表現: 歌はわずか1句で構成されていますが、その言葉選びは簡潔でありながら力強く、故郷への深い愛情が伝わってきます。
- 「仰ぎ見る」という視線: 木留山を「仰ぎ見る」という視線は、故郷への憧憬と敬意を表しています。遠くから故郷を見上げることで、より一層故郷を大切に思う気持ちが強調されています。
- 「雲間に光る」という美しさ: 木留山が雲間に光る様子は、幻想的で美しい情景を描き出しています。これは、故郷の風景が山県にとって特別な存在であることを示唆しています。
- 故郷へのノスタルジー: 「故郷の空」という言葉は、故郷に対するノスタルジー(郷愁)を強く感じさせます。山県が故郷を離れて長い年月を過ごしたことを考えると、この歌には、故郷への強い思いが込められていると言えるでしょう。
この歌の評価
この歌は、山県の和歌の中でも代表作の一つとして知られています。その理由は、以下の点が挙げられます。
- 普遍的なテーマ: 故郷を懐かしむ気持ちは、誰にでも共感できる普遍的なテーマです。そのため、この歌は時代を超えて多くの人々に愛され続けています。
- 美しい自然描写: 木留山の美しい風景が、歌の中に生き生きと描かれています。自然の美しさを通して、故郷への愛情がより深く表現されています。
- 山県の人間性: この歌は、山県の人間性を象徴する作品と言えるでしょう。故郷を大切に思う気持ちや、自然を愛する心は、彼の生い立ちや性格を反映しています。
まとめ
「木留山(きどめやま)の歌」は、山県有朋の故郷への愛情と美しい自然描写が込められた名歌です。この歌を通して、彼の人間性や時代背景を理解することができます。
やれやれ。
ときどき ollama がうんともすんとも反応しなくなることがある。その場合は
docker start open-webui
ってやれば治ることが判明した。
この ollama + open-webui というやつは極めて不安定でときどき再起動してやらなくてはならない。
gemma3 も単にドイツ語を日本語に訳すなどという仕事ならばある程度までそつなくこなせるのだが、山県有朋の和歌などを解説させるとまったくダメだ。同じことは gpt-oss:120b にも言える。正直言ってまったくつかいものにならない。
Dell Pro Max with GB10
大学生協で Nvidia DGX Spark が台数限定で売られていて年度末で予算が余っていたので買おうとしたら売り来てて店長さんに代わりに OEM 互換の Dell Pro Max with GB10 を紹介され、それを購入した。699,900円。
セットアップしようとしたら本体に USB-C 端子しかなく詰んだが、いろいろ探してみるとUSB-C -A アダプタなどがバラバラ出てきたのでキーボード、マウス、USBメモリなどをつなげられるようになり、先に進んだ。
なにかのはずみで GUIログインができなくなったので、OS再インストールしようかと思ってここからしばらくハマった。
めんどくさいので途中経過は省略するが「NVIDIA DGX Spark 公式」の方法によるシステムリカバリーというところに書かれている通りにやったらなんとか再インストールできた。なぜかはわからんが、windows で powershell のスクリプトでリカバリーイメージをUSBメモリに流し込まなくては boot option で usb なんちゃら partition 1 という選択肢が出てこない。この選択肢が出さえすれば OKらしく、welcome メッセージが出て、あとはすんなり進んだ。それ以外の dgx os installation などというそれっぽい選択肢を選んでもすべて CUI インストーラーしか立ち上がらず、途中でエラーが出て失敗する。
CreateUSBKey.cmd というスクリプトもそのままではなぜか動かず、中に書いてあるコマンドを直打ちして実行したら動いた。すべてがグダグダだった。
最初は rufus で isoモードで書き込んだのがいかんのだろうと思ったが dd モードで書き込んでもだめ。Dellのサイトにかかれているとおりに ubuntu で dd でイメージを流し込んだりいろいろ試したがすべてだめだった。
wifi ルーターかなにかで windows のノートPC と LAN 共有し、Nvidia Sync でつないで使うというやり方しか今ところ想定されていないような気がする。
MSI や Dell などが OEM で提供しているようだが、とにかく情報が少なすぎて、ユーザーも少なすぎて、今慌てて手を出すのはかなり地雷な気がするが、まあ私はなんとかなったのでもういいやって思ってる。
それでこれからなんだけど、まったく右も左もわからないので、LM Studio 入れようかと思ったら arm64 では動かないらしく、Docker 環境で ollama + Open Web UI で使うのがどうも標準らしいんだが、Docker のありがたみもよくわからんので、とりあえず ollama 入れて、gpt-oss:120b をコマンドラインでガリガリ使ってみようと思っている。いろんな流儀がありすぎてもうわけわからん。いろいろ教えこんで授業の AI アシスタント代わりに使えると良いのだが、たぶんそこまで行くのはずっと先だと思う。
めちゃめちゃ小さくて軽いので、家に持ち帰っていじろうかという気でいたのだが、今のところその気は失せた。すぐにどうこうなるというものではないし、家では家ですることがあるから大学に置きっぱなしにして、とりあえず学生とかに使わせるのでなく、自分だけでいろいろいじってみる。
有線LANでつないで固定IPアドレスで使えるともう少しやりようがあるんだけど、なぜかうまくいかない(イーサーのケーブル挿しても反応しない。多分OS初期設定の時に有線LANをつなぎっぱなしにしなきゃいけないんだが、学内ネットワークのproxy設定しないと外につながらなくてそこで詰む。ubuntu のインストールと同じ。仕方なく wifiルーターで無線LANにつないで初期設定すると有線は使えなくなる。有線か無線が排他的にしか使えない設定ではなかろうか。普通のubuntuだとあとから有線固定IP接続すれば使えるんだがなー)。無線LANで学内ネットワークにつないで ProxyPass で ubuntu の apache から見えるようにすることもできるんだけど、まずはスタンドアローンで使ってみるかなーって感じ。
ともかく現状、ネットで調べようとしても情報がまったく出てこないので、のんびりやるしかない。
gpt-oss-20b を rest api 的に他のpcから使うにはどうしますか。
gpt-oss-20b に質問
gpt-oss-20b を rest api 的に他のpcから使うにはどうしますか。
GPT‑OSS‑20B を「REST API 風に」他の PC から使う手順
以下は、ローカル環境(GPU があるサーバー)で GPT‑OSS‑20B(または同等の大規模言語モデル)を起動し、外部から HTTP リクエストで呼び出せるようにする一例です。
実際には環境や要件に応じて調整してください。
| 目的 | 推奨ツール / ライブラリ |
|---|---|
| モデルロード & 推論 | transformers + torch (GPU 必須) |
| REST API サーバー | FastAPI(非同期、Swagger UI 付き) または Flask(簡易) |
| コンテナ化 | Docker (任意) |
| ネットワーク公開 | ポートフォワード / VPN / Cloud Load Balancer |
1. 前提条件
| 項目 | 内容 |
|---|---|
| OS | Linux (Ubuntu20.04 以外でも OK) |
| GPU | NVIDIA + CUDA 11.x+(例: RTX 3090, A100) |
| Python | 3.9〜3.12 |
| ディスク容量 | モデルサイズ ≈ 30–35 GB + ランタイム |
| ネットワーク | 外部からのアクセス許可 (ポート80/443 等) |
2. 必要なパッケージをインストール
# 仮想環境作成(任意)
python -m venv gpt-oss-env
source gpt-oss-env/bin/activate
# PyTorch (CUDA)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# Transformers + accelerate
pip install transformers accelerate==0.21.2 # 最新の安定版を使用
# FastAPI + Uvicorn
pip install fastapi uvicorn[standard] # 標準的な ASGI サーバー
Tip
accelerateはモデルを複数 GPU に分散する際に便利です。単一 GPU なら不要ですが、将来拡張したい場合はインストールしておくと楽です。
3. モデルのダウンロード
GPT‑OSS‑20B は Hugging Face Hub から直接取得できます。
(モデル名は例として EleutherAI/gpt-oss-20b を使用)
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "EleutherAI/gpt-oss-20b"
# トークナイザーとモデルをロード
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto", # GPU に自動配置
torch_dtype=torch.float16, # FP16 でメモリ削減
)
# GPU が複数ある場合は accelerator を使うとさらに高速化可能
注意
device_map="auto"は Hugging Face のaccelerateによって自動的にGPUに割り当てます。
メモリ不足が起きたらtorch_dtype=torch.float16やload_in_8bit=Trueを試してください。
4. FastAPI アプリを作成
以下のスクリプト (app.py) をサーバー側 PC に保存します。
# app.py
import os
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# ---------- モデルロード ----------
MODEL_NAME = "EleutherAI/gpt-oss-20b"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
device_map="auto",
torch_dtype=torch.float16
)
device = next(model.parameters()).device
# ---------- API 定義 ----------
app = FastAPI(title="GPT‑OSS‑20B REST API")
class PromptRequest(BaseModel):
prompt: str
max_new_tokens: int | None = 128
temperature: float | None = 0.7
top_p: float | None = 1.0
@app.post("/generate")
async def generate(req: PromptRequest):
try:
inputs = tokenizer(req.prompt, return_tensors="pt").to(device)
with torch.no_grad():
output_ids = model.generate(
**inputs,
max_new_tokens=req.max_new_tokens or 128,
temperature=req.temperature or 0.7,
top_p=req.top_p or 1.0,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
return {"generated_text": generated_text}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
# ---------- Swagger UI などは自動で提供 ----------
実行
uvicorn app:app --host 0.0.0.0 --port 8000 --workers 4
ポイント
--workersは複数プロセスを起動し、並列リクエストに対応。- ここではポート 8000 を開放していますが、必要なら 80/443 に変更して HTTPS 化してください。
5. ネットワーク設定
- ファイアウォール
sudo ufw allow 8000/tcp # 例: UFW
- ポートフォワード(ローカルネット)
- ルーター側で
8000をサーバーの IP に転送。 - VPN(OpenVPN, WireGuard 等)を利用して安全にアクセス。
- HTTPS 化 (任意)
- Let’s Encrypt + Nginx のリバースプロキシ
server { listen 443 ssl; server_name gpt.example.com; ssl_certificate /etc/letsencrypt/live/gpt.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/gpt.example.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
6. 他の PC から呼び出す
cURL
curl -X POST http://<サーバーIP>:8000/generate \
-H "Content-Type: application/json" \
-d '{"prompt":"こんにちは、GPT-OSS‑20B。","max_new_tokens":64}'
Python (requests)
import requests
url = "http://<サーバーIP>:8000/generate"
payload = {
"prompt": "日本語で小説の冒頭を書いてください。",
"max_new_tokens": 100,
}
resp = requests.post(url, json=payload)
print(resp.json()["generated_text"])
ブラウザ
http://<サーバーIP>:8000/docs にアクセスすると Swagger UI が表示され、手軽に試せます。
7. Docker 化(任意)
# Dockerfile
FROM python:3.10-slim-bullseye
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git build-essential libssl-dev curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip install --upgrade pip && pip install -r requirements.txt
COPY app.py .
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
# ビルド & 実行
docker build -t gpt-oss-api .
docker run -d --gpus all -p 8000:8000 gpt-oss-api
注意
GPU を Docker に渡すには--gpus allが必要。
NVIDIA ドライバとnvidia-container-toolkitがインストールされていることを確認。
8. スケーリング・運用
| 要件 | 推奨設定 |
|---|---|
| 同時リクエスト数が多い場合 | uvicorn の --workers を増やす。または Gunicorn + UvicornWorker で複数プロセスを組み合わせる。 |
| 高可用性 | Kubernetes(k8s)上にデプロイし、ReplicaSet/Deployment で自動リスタート。 |
| モデルキャッシュ | torch.hub のキャッシュディレクトリ (~/.cache/huggingface/hub) を永続化する。 |
| ログ & メトリクス | Prometheus + Grafana(推論時間・CPU/GPU 使用率)を組み合わせる。 |
9. よくある質問
| 質問 | 回答 |
|---|---|
| GPU が足りない | FP16/8bit に切替、または torch.compile(PyTorch 2.x)で高速化。複数 GPU を持つサーバーを用意するか、クラウド (A100, V100) を利用。 |
| リクエストが遅い | バッチ処理や torch.backends.cudnn.benchmark=True の設定で最適化。推論時に do_sample=False すると高速になる場合もある。 |
| セキュリティを強化したい | API キー認証(FastAPI の Depends + HTTP Basic/OAuth2)や VPN を併用。 |
| モデルサイズが大きくてダウンロードに時間がかかる | git clone --depth 1 でクローン、または Hugging Face Hub のキャッシュを共有(NFS / EFS)。 |
10. まとめ
- GPU‑対応の Python 環境を用意。
transformers+torchで GPT‑OSS‑20B をロード。- FastAPI(または Flask)で
/generateエンドポイントを実装。 - Uvicorn (or Gunicorn) でサーバー起動し、ファイアウォール・ポートフォワードで外部公開。
curl/requests/ Swagger UI で他 PC から呼び出す。
この構成なら、同一 LAN 内はもちろん、インターネット経由でも安全に REST API を利用できます。
実際に導入する前に、必ず GPU メモリ使用量・推論時間を測定し、必要に応じて FP16/8bit などの最適化を行ってください。 Happy coding!
国会図書館デジタルコレクションのコンテンツを生成AIで学習させてはどうでしょうか。
gemini3に質問
国会図書館デジタルコレクションのコンテンツを生成AIで学習させてはどうでしょうか。
国会図書館(NDL)デジタルコレクションのデータを生成AIに学習させるというアイデアは、日本のAI開発において**「非常に重要かつ、現在進行形で議論・実行されている」**極めてホットなトピックです。
実は、すでに一部では実現しており、日本の文化的背景を正しく理解する「日本独自のAI(国産LLM)」を作るための切り札として期待されています。
現在の状況と、実現に向けたメリット・課題を整理して解説します。
1. すでに始まっている取り組み
国会図書館は、単に本を保管するだけでなく、AI時代に即したデータの利活用を積極的に進めています。
- NII(国立情報学研究所)との連携:2025年10月、国会図書館は官庁出版物などのテキストデータ約30万点を、LLM(大規模言語モデル)の学習用としてNIIに提供することを発表しました。
- 次世代OCRの開発:古い資料は画像データであるため、そのままではAIが読めません。NDLは独自に高性能なAI-OCR(NDLOCR)を開発し、明治・大正期の複雑なレイアウトや旧字体をテキスト化して、AIが学習しやすい形に整えています。
2. デジタルコレクションを学習させる圧倒的なメリット
日本の知識の集大成を学習させることには、以下のような大きな価値があります。
| メリット | 内容 |
| 日本語の質の向上 | インターネット上の俗語や翻訳調ではない、正しく美しい日本語や専門的な語彙を学習できる。 |
| 文化的背景の理解 | 日本の歴史、伝統、文学、法制度などを深く理解した、文化的に正しい回答が可能になる。 |
| 著作権のクリーンさ | 著作権が消滅した「パブリックドメイン」の資料を大量に含むため、法的リスクの低いクリーンな学習データになる。 |
| 「知のインフラ」の形成 | 過去の膨大な知見を対話形式で引き出せるようになり、研究や教育の効率が飛躍的に高まる。 |
3. 実現に向けた高いハードル
もちろん、すべてが順風満帆というわけではありません。
- 著作権法30条の4の解釈:日本の著作権法はAI学習に寛容ですが、「著作権者の利益を不当に害する場合」は例外とされています。最新の書籍を勝手に学習させ、そのAIが著者の作風を完璧に模倣して本を売るような事態になれば、権利侵害となる懸念があります。
- OCRの精度:戦前の資料や手書き資料は、AIによる読み取りミス(誤字)がまだ多く含まれます。誤ったデータを学習すると、AIが「もっともらしい嘘(ハルシネーション)」をつく原因になります。
- プライバシーと差別表現:古い資料には、現代の倫理観では不適切な表現や、今では保護されるべき個人情報が含まれている場合があります。これらをどうフィルタリングするかが課題です。
結論:AIは「歩く国会図書館」になれるか
国会図書館のデータを学習したAIは、いわば**「日本の記憶をすべて持った知的なパートナー」**になります。これが実現すれば、私たちは数十年、数百年前の先人たちの知恵に、チャットを通じていつでもアクセスできるようになるでしょう。
政府も「AI時代の著作権」について議論を重ねており、今後は「著作権保護」と「データ活用」のバランスを取りながら、この膨大なデジタルアーカイブが日本のAI競争力の源泉になっていくはずです。
「もし国会図書館の全データを学習したAIが完成したら、あなたはまずどんな質問をしてみたいですか?」
例えば、歴史の裏側や、今は絶版になった技術書の内容について聞くなど、夢が広がりますね。
もし興味があれば、実際にNDLのデータを使って開発されている「国産AI」の具体的なプロジェクトについて詳しくご紹介することも可能です。
万葉集の歌をすべてAIに学習させればAIは万葉語で歌が詠めるようになりますか。
gemini3 に質問
たとえば万葉集の歌をすべてAIに学習させればAIは万葉語で歌が詠めるようになりますか。
結論から申し上げますと、技術的には十分に可能であり、現在のAI(特に大規模言語モデル)はすでにそのレベルに到達しつつあります。
万葉集の全4,500首以上を学習させることで、AIは当時の語彙、文法、そして「万葉びと」特有の感性やリズムをシミュレートできるようになります。
しかし、単に「言葉を並べる」ことと、「万葉の心で詠む」ことの間には、AIならではの面白さと限界があります。その仕組みを整理して解説します。
1. AIが「万葉語」を習得する仕組み
AIは統計的なパターン学習によって、以下のような要素を身につけます。
- 語彙と文法: 現代では使われない助詞や助動詞(「〜けむ」「〜らむ」など)の使い方、万葉集特有の古い言葉選びを学習します。
- 枕詞(まくらことば)の法則: 「あかねさす」が「紫」や「日」にかかるといった、特定の言葉の結びつきを確率的に理解します。
- 五七五七七のリズム: 短歌の定型を、単なる文字数ではなく、心地よいリズムのパターンとして把握します。
2. 万葉集「だけ」を学習させることの効果
もし他の現代的な知識を一切与えず、万葉集のデータのみを特化して学習させた場合、AIは**「驚くほど純度の高い万葉風の歌」**を詠むようになるでしょう。
- メリット: 現代語が混ざらないため、タイムスリップしたような古風な表現が可能です。
- デメリット: 万葉集に登場しない概念(例:現代の「スマートフォン」や「鉄道」など)を詠もうとすると、語彙がないためフリーズするか、強引に当時の言葉(「文を運ぶ板」など)に置き換えようとします。
3. AIが詠む歌の「限界」と「可能性」
AIは非常に精巧な「万葉風の歌」を作れますが、人間と決定的に違う点が一つあります。
AIは「実体験」を持っていない
万葉歌人の多くは、実際に見た風景や、誰かを想う切実な感情を歌に込めました。AIは「『月』という言葉の次には『照らす』という言葉が来やすい」という確率計算で歌を作ります。
しかし、逆に人間には思いつかないような、万葉語の斬新な組み合わせ(言葉のコラージュ)を生み出すこともあります。これは、古典文学の新しい解釈や創作のヒントとして非常に有用です。
万葉風AIの作例(イメージ)
もし現代の風景を万葉語で詠ませたら、こんな歌を出すかもしれません。
「令和の 街のともし火 あかねさす 昼にも勝り 夜を照らすかも」 (令和の街の明かりは、日の光よりも明るく、夜を照らしていることよ)
このように、形式と雰囲気は完璧に「万葉調」にすることが可能です。
次の一歩として、もしよろしければ私が今、万葉集のスタイルであなたに一首詠んでみましょうか? 何かお題(好きなものや今の気分など)を教えていただければ、万葉語で表現してみます。