geminiで英訳

gemini に英作文を手伝ってもらうのが面白いのは、翻訳のプロの先生にアドバイスを受けているような気分になるからだろう。実際、もし人間の先生にこの程度の個人レッスンを受けようと思えばどれほどのお金とてまひまと時間が必要だろうか。なんとなく英訳のコツがわかってくるような気にもさせられる。少なくとも今まで自分がどんなに下手だったかは気付かせてくれる。

ただの錯覚かもしれないが、励みになるのは良い。

楽天アフィリエイトがまったく役に立たないのは笑える。まだ google adsense のほうが手ごたえを感じる。完全に一から再構築しているので、まったく収益化には至っていないのだが、まあすべてはこれからだ。

せっかく gemini のアドバイスに従って英語の wordpress と日本語の wordpress を分けたのだが、日本語の(つまりこちらの)ページにも英文検索でひっかかるようになった。わけがわからない。まあしばらくはどちらも残しておき、そのうち整理できればしよう。

wordpressを分ける

geminiなどに相談してみた結果(笑)、英文の記事と和文の記事を多言語化プラグインを用いて書き分けても、SEO的にはあまり効果が無いらしく、もう一つある意味休眠中というか、何に使おうか決めかねていた wordpress のサイトがあったから、こちらを英文の a sketch of asakusa とし、こちらはもとの「はかもなきこと」に戻すことにした。

楽天アフィリエイトを貼るようになってわかったことはやはりこんなものはまったく儲からない、ということであった。英文のページから収入を得るには google Adsense くらいしか選択肢はないと思うが、こちらの効果はまだわからない。長く続けていると多少は効果が出てくるかもしれないし、まったく無駄かもしれないが、英文で google 検索の上位にでてくればそれなりのアクセスは稼げるのではないかと思っている。へんてこな広告はだいたいブロックできているように思える。

英文へのアクセス

gemini や google translate に相談しながら(笑)英文ページを作るのはとても楽しいのだが、google search console や analytics をみても、これらのページが閲覧されている形跡がまったくないのはがっかりだ。たとえば Daruma などで、せっかく「鶯谷」を工夫して a valley where bush warblers are singing と訳してみたり、初音小路を first chirp ally と訳したりしても、まったく張り合いがない。

google というものは、日本人には日本のサイトばかり、外国人には英語のサイトばかりみつけて見せるものなのだろうか。

勝手な思い込みで、世の中にまったく必要とされていない努力をしているようで嫌になる。

Kindle で本を出したときもそうだった。私がどんなに良い小説を書いたつもりでも誰も読まない。いっぽうで、エウメネスはヒストリエという漫画のついでに私の小説も注目されていまも読まれている。エウメネスは読まれる価値のある小説だと私も自負してはいるのだが、それ以外の小説がエウメネスより劣っているとは思えない。同じ作者、つまり私が書いたもので大差あるわけがない。

なんかしらの営業が必要なのはわかるが、営業の素人、というより、世の中の仕組みも資本主義の原理も知らない私が広告なんか出したところでドブに金を捨てるようなものだ。

結局私たちは、教育を受けて、大学を出て、会社に所属しないと金儲けができない存在なのだろうか。自分の力で生きていくことはできないのだろうか。

しかし自分が撮った写真を整理してみるとこの2年間ほど恐ろしく浅草で遊び回ったことがわかる。よくもまあこんなに遊んで死ななかったものだ。こんなに遊んだらもうこの世には何も楽しみなんて残ってなくて当たり前だ。

定年が近づくと私のように今の仕事に一切の情熱を失って、辞めた後何を老後の楽しみにしようかってことばかり考える人がいる一方で、辞めるぎりぎりまで可能な限りがんばろうとする人がいるように思う。私には理解できない。今やっていることを人に評価してもらって仕事を辞めた後も知り合いに覚えておいてもらいたい、尊敬してもらいたいと思っているのだろうか。そんな人は滅多にいない。もし万一いたとしても、死んだあとには何も残らないようなことに私だったら、頑張ったりしない。そんなことにあくせくとするくらいなら、その時間ぼーっと楽に過ごしたい。

やはり初心に還り

楽天アフィリエイトは簡単にブログに入れられるので入れてはみたものの、今のところ報酬はない。そりゃそうで、100万人が見にきてそのうち1万人がうっかり楽天のアイコンをクリックして、そのうち1人くらいが買い物をして、その1%が報酬になるのであるから、とにかくめちゃくちゃアクセスがなければ儲かるはずがないのである。そんなことは最初からわかっていたではないか。

なので初心に還って、浅草地下街情報をインバウンド客向けに発信して薄く広く、Google Adsense で儲けるという方針に戻ろうと思う。英語ページの露出はまだまだ少ないがゼロではない。ここを突破口にして徐々に入口をこじあけていくしかあるまい。

で、それ以外のページはほとんど読まれることはないわけだから、だいたい今まで通り、自分用のメモとか、なんか言いたいことのはけ口に使えばよい。とりあえずトップページは英語サイトへの誘導に使う。

ていうかむしろ日本人には目立ちたくない。インバウンド客だけに重宝されて、それで小遣い稼ぎができているのがベスト。

こういうアフィリエイトとかやり始めると人生に達観してくるというか、スポーツとか旅行とか食事なんてものは金持ちが大衆から金をむしりとるためのツールに過ぎず、金があれば、いやな仕事をせずに済ますとか、いやな隣人と会わずにすますとか、隣の家の犬にイライラせずに済ますとか、たばこの煙を吸わされずに済ますとか、もっと、楽に生きるとか、楽に移動するとか、そういうことに使えばよいのだ、などと思えてくる。

私にいわせればスポーツなどは特に無駄で、自分でやるならともかく、人がプレイしているのに一喜一憂していったい何の意味があるのか、自分にとってなんのメリットがあるのかと思ってしまう。スポーツというものは要するに人間が国家などというものを作って戦争などするときに、大衆がそういう大義に激昂する習性をもっていたほうが種族として生き残りやすかったから形成されてきたものに違いない。私には何の関係もない。

もちろん自分が年を取ってきたせいもあるが、うまいものをくいたいとかしらない町を歩いてみたいなどという欲望もずいぶん薄れてきた。最後まで残るのはやはり知らないことを知りたいという好奇心くらいか。

知的生命体というが、人類が知的生命体といえたのはせいぜい100万年くらいしかなく、宇宙全体の歴史からすれば一瞬だ。こういう有機生命体に知性や知能を宿し続け、知識を伝達していくことは極めて不安定で不都合で不合理だから、きわめて近い将来に、知性というものは生命に依存しない形で存続することになろうと思う。というようなことはすでにH.G.ウェルズがタイムマシーンで言っていたことであり、またユヴァル・ノア・ハラリもホモ・デウスで言っている。士郎正宗はゴーストなどという概念に縛られてしまった。そんなものは必要無い。

今後も人類の進化が自然選択 (natural selection) という生命機構に委ねられている限り、人間の知能が機械の知能にはるかにおいていかれるのは間違いあるまい。そうした場合、人類は進化と繁殖という能力を用いて宇宙に散らばっていくかもしれないが、家畜化された状態におかれることになるのだろうと思う。

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. 前提条件

項目内容
OSLinux (Ubuntu20.04 以外でも OK)
GPUNVIDIA + CUDA 11.x+(例: RTX 3090, A100)
Python3.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.float16load_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. ネットワーク設定

  1. ファイアウォール
   sudo ufw allow 8000/tcp   # 例: UFW
  1. ポートフォワード(ローカルネット)
  • ルーター側で 8000 をサーバーの IP に転送。
  • VPN(OpenVPN, WireGuard 等)を利用して安全にアクセス。
  1. 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. まとめ

  1. GPU‑対応の Python 環境を用意。
  2. transformers + torch で GPT‑OSS‑20B をロード。
  3. FastAPI(または Flask)で /generate エンドポイントを実装。
  4. Uvicorn (or Gunicorn) でサーバー起動し、ファイアウォール・ポートフォワードで外部公開。
  5. 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」の具体的なプロジェクトについて詳しくご紹介することも可能です。

bios画面が出ない

linuxをインストールするためboot順序を変えようと思い、bios画面をだそうとしてなかなか出ないということが何度かあった。

bios画面を出すには hp だと f10 だが lenovo だと f1 らしい。しかしいくら押してもそもそもマザボの bios が表示するロゴ画面がでない。これはおそらく、マザボの仕様で、外付けGPUを挿している場合には、そちらの出力にしかロゴ画面がでないのだ。

lenovo thinkstation P340 tiny は 4ポートの mini displayport しかない quadro を挿していて、こちらに繋ぎ代えたらロゴ画面が出て、bios 設定画面を出すことができた。

備忘録代わりに、bios画面を出すで検索してもなかなかこの情報が出てこないので書いておく。

PCモニタがわのせいか、ケーブルのせいか、それとも gpu のコネクタのせいかは知らないが、displayport 端子はすぐにひっかかって壊れてしまう。または抜きにくい。非常にストレスがたまる。

その点、mini displayport は、抜けやすいのかもしれないが、ストレスがたまらないのがよい。displayport はみんな mini にしてしまえばよいのに、とも思うが、将来はみな usb 接続に統一されていくのかもしれない。

仕事が減ってきたので優雅に ubuntu などいじってるが、教員として仕事をするなら、このくらい余裕があってちょうどよいのに違いない。

アカデミックアドバイザー制度、学修ポートフォリオ

教員が学生に指導したり、教育したり、助言することはできるだけ少なくしたほうが良いと私には思える。その代わりに学生が能動的に、自分はどういう社会人になりたいのかということを、明確に意識するような仕組みを大学が提供すべきで、そのためにアカデミックアドバイザー制度とか学修ポートフォリオなどが必要になるのだ。

学生が教員に言われたからやりますではダメだし、教員も、学生が自分の指示通りに動いたからと、ただそれだけで満足してはダメだ。

結局学生がメンタルを病むのも、或いは成績不良で留年するのも、就活で苦労するのも、自分が社会にどんなふうに必要とされているのか、将来自分が社会人になってどうやって生計を立てていくかという明確な見通しがないことに起因するのであり、最近は精神を病む学生が多いとか、留年者が多いなどということは原因ではなく結果であって、学生部的に、教務部的に対症療法でなんとかしようとしても、効果はあまり期待できないと思う。問題の本質はアドミッションポリシーとディプロマポリシーにある。

そしてカリキュラムポリシーに関していえば、将来社会人として世の中で働いていける教養と技能、そして社会性を身に付けさせ、社会人として働いていける準備を完了させるというほかにない。授業の難易度を下げ、面白くウケは良いが簡単な授業ばかりにすることは留年を防ぐため一時的な効果はあるかもしれないが、それが就職に不利に働くのであれば結局はアドミッションポリシーにもディプロマポリシーにも反することになる。

大学四年間はモラトリアムで、じっくり自分が将来どんな人間になるか考える期間なのだという。それはまったくその通りで、やっぱり自分は就職しない、ユーチューバーになる、というのもそれはそれでその人が、最終的に選択した結論ならば良いのだけど、どんな人間になりたいかわからないまま大学に入り、どんな人間になりたいか決められないまま卒業するというのでは、どんな優れた教育をおこなったとしても学修成果としては不十分と言わねばなるまい。逆にどんな人間になりたいか明確に定まり、揺るぎないモチベーションが定まったならば、大学で学んだことと社会でやることがほとんど関係なくても、それはそれで大学に進学したかいがあった、学修成果があったといわねばなるまい。

教員がいくら、本人のためによかれと、あれこれ教えても、それで学生がますます萎縮し、自発的に考えることも行動することもできなくなるとしたら、それは悪い教育だ。また、あなたは自分で自由に考えて、自分のなりたい自分になりなさい、と言うだけではまったく不十分だ。学生はえてして自由を与えられても何をやれば良いかわからず結局は何もしない。やはり大学側としては、まったくもって当たり前のことなのだが、明確なアドミッションポリシーとディプロマポリシーを提示し、アカデミックアドバイザー制度や学修ポートフォリオを充実させ、学生がそれらを完全に理解し活用できるようにしてあげるべきなのである。それらの制度と、小中高校までの担任制度のように、何でも教員が学生の面倒を見てあげるようなものとは、まったく違うものなのだ。

山形有朋が伊藤博文に詠んだ歌

ollama + open-webui + gemma3:27b

伊藤博文が暗殺されたときに山県有朋が詠んだ歌について教えてください。

伊藤博文公が1909年(明治42年)にハルビンで暗殺された際、山県有朋は以下の歌を詠んでいます。

「ああ友よ 帝に仰ぎて 死を観る 白き髪の 我に託せ」

この歌は、伊藤博文の死を悼み、彼が国家のために尽くした人生と、その遺志を受け継がなければならないという強い決意を表しています。

  • 「友よ」:伊藤博文との長年の親交と、深い友情を表現しています。
  • 「帝に仰ぎて」:伊藤博文が天皇陛下への忠誠を誓い、国家のために尽くしたことを示しています。
  • 「死を観る」:伊藤博文の突然の死に対する衝撃と悲しみを表しています。
  • 「白き髪の 我に託せ」:自身の老いた姿を自覚しつつ、伊藤博文の遺志を受け継ぎ、残された者が責任を負うことを決意しています。

この歌は、伊藤博文の死を悼む山県有朋の深い悲しみと、国家への責任感、そして伊藤博文の遺志を継承する決意が込められたものとして知られています。

参考文献として、以下のウェブサイトもご参照ください。

ご参考になりましたでしょうか。

ちなみに有朋が実際に詠んだ歌は次のものである。

かたりあひて 尽しし人は 先立ちぬ 今より後の 世をいかにせむ