つるながの綴り方

ITインフラ系のネタやTips、趣味としているカーライフなどを中心に日頃メモしておきたいことをしたためています。

【書棚ディスプレー】スーパーロボット超合金ガオガイガー&勝利の鍵セット

ガイガイガー本体はだいぶ前に手に入れていたものの、勝利の鍵セットのゴルディオンハンマーを入手できずに、ディスプレイしていませんでした。ようやく新品未開封品がヤフオクで見つかったので、勝利の鍵セット2のステルスガオーIIもあわせてディスプレイしてみました。


今やガオガイガーの立体物は、各社から販売され、サイズもバリエーションも豊かですが、2011年当時は珍しかったと思います。本体は5,000円ほど、オプションパーツも2,000円程度だったように記憶しています。


ステルスガオーIIをセットしてスターガオガイガー化。ウルテクエンジンの造形も細かく、クリアーパーツの中に機構が見えます。サイズ感は全高15cmほどと、RGクラスになりますが、ゴルディオンハンマーを持たせると、かなりの重厚感です。

【読了】ここはすべての夜明けまえ

滅多に読んだ本の感想を残さないのですが、久々に良本に出会えたような気がししたので記しておきます。
第11回ハヤカワSFコンテスト特別賞を受賞した間宮改衣の「ここはすべての夜明けまえ
」。作品は2123年を舞台に、永遠に老化しない身体を持つ「わたし」が自身の人生と家族について振り返る物語です。
主人公の独特な視点と語り口によるモノローグが、サリンジャーの「ライ麦畑でつかまえて」の主人公ホールデン・コールフィールドを想起させます。人間性から遠く隔たれた"人間"によって語られる痛切な"愛"の物語として描かれていますが、近未来のデストピア的な要素が鮮明に表現されており、世代を超えて生き続ける主人公が身近な家族との関係を描く点は、アイザック・アシモフの「アンドリューNDR114」を想起させなど、ガチガチのハードSFです。

Spotlight検索にMarkDownファイルを含める(macOS 15対応)

MarkdownファイルをSpotlight検索の対象に含める方法を定期的にアップデートしています。前回、10.15(Catalina)向けに書いたっきり。それほど大きくは変わっていませんが、改めて備忘録を更新しておきます。

tsurunaga.hateblo.jp

手順は、
1. RichText.mdimporterインポーター(プラグイン)をMarkdown.mdimporterとしてコピー
2. Markdown.mdimporterの中身を修正
3. Markdown.mdimporterをインストールします。

適当な作業フォルダーに移動して、RichText.mdimporterをMarkdown.mdimporterとしてコピーします。

$ cp -r /System/Library/Spotlight/RichText.mdimporter Markdown.mdimporter

次に、Markdown.mdimporter/Contents/Info.plistファイルをエディターで開いて修正。オリジナルからの修正は次の通り。

16,23c16
< 				<string>public.rtf</string>
< 				<string>public.html</string>
< 				<string>public.xml</string>
< 				<string>public.plain-text</string>
< 				<string>com.apple.traditional-mac-plain-text</string>
< 				<string>com.apple.rtfd</string>
< 				<string>com.apple.webarchive</string>
< 				<string>org.oasis-open.opendocument.text</string>
---
> 				<string>net.daringfireball.markdown</string>
28c21
< 	<string>RichText</string>
---
> 	<string>Markdown</string>
32c25
< 	<string>com.apple.MDImporter.RichText</string>
---
> 	<string>com.apple.MDImporter.Markdown</string>
36c29
< 	<string>Rich Text Sniffer</string>
---
> 	<string>Markdown Sniffer</string>

Markdown.mdimporterを作成できたたら、 /Library/Spotlight/にインストールして、Spotloghtの検索対象に加えます。

$ sudo cp -R Markdown.mdimporter /Library/Spotlight
$ mdimport -r /Library/Spotlight/Markdown.mdimporter

すぐにインデックスは作成されませんが、しばらくすると、結果が反映されます。

「図解即戦力 ITインフラのしくみと技術がこれ1冊でしっかりわかる教科書」発売!

技術評論社より「図解即戦力 ITインフラのしくみと技術がこれ1冊でしっかりわかる教科書」が発売されました。図解即戦力シリーズ2冊目になります。今回は、仕事でご一緒しているメンバーの共著になっています。

初学者が押さえておきたいITインフラの基本がわかる!
本書では、インターネットやモバイル通信を支えるITインフラのしくみと技術をフルカラーの図解で解説します。この解説を通して、初学者が押さえておきたいネットワークやサーバ、クラウドサービスについての基礎知識を習得できます。これからITインフラの基本を学びたい人やITインフラエンジニアを目指している人におすすめの1冊です。

はじめてのLinuxサーバー構築入門2025発売!

「はじめてのLinuxサーバー構築入門2025」が発売されました。過去日経Linuxに寄稿した記事が、再編集され掲載されています。ぜひご一読を!

Ollama+Chainlit+LangChainでローカルLLM対応Webチャットボットを構築する方法の備忘録(自分用)

はじめに

OllamaでローカルLLM環境をつくって、Web対話ボットをChainlitを用いて作成する。完成イメージはこんな感じ。

検証環境

  • Dockerコンテナー(nvidia/cuda:12.6.2-devel-ubuntu24.04)
  • Python 3.12.3
  • ollama version is 0.3.14
  • Chainlit 1.2.0
  • LangChain 0.3.4

そのほか必要な環境

  • pip、virtualenvがインストールされていること
  • Chainlitや、LangChainのインストールについて、こちらを参考 tsurunaga.hateblo.jp
  • Ollmaをインストールして、サーバーを起動しておく tsurunaga.hateblo.jp

手順1. Python仮想環境の準備(任意)

ライブラリーのバージョン問題等、後々環境をもとに戻す際に面倒がないよう、仮想環境を利用

$ python3 -m venv webchat
$ source webchat/bin/activate

プロンプトに仮想環境名が入っていることを確認。

手順1. テスト用Pythonクライアントアプリケーションの作成

1 必要なライブラリの追加インストール

  $ pip install  langchain_community

(メモ忘れ。過不足あるかも。)

2 Pythonスクリプトの作成

ollama1.pyという名前の新しいファイルを作成し、以下のコードを追加します:

from langchain_community.chat_models.ollama import ChatOllama

llm = ChatOllama(model="command-r-plus")

response_message = llm.invoke("使っているAIのモデル名は?")
print(response_message.content)

3 Pythonスクリプトの実行

python ollama1.py 
私はChatGPTです。Open AIが開発した大規模言語モデルで、Generative Pre-trained Transformer(生成型事前学習トランスフォーマー)を略しています。このテクノロジーは、大規模なテキストデータセットを使用した深層機械学習によって強化されていて、さまざまな自然言語処理タスクにおいて人間のような応答の生成が可能です。

実行時に「ChatOllama」のimportに関する警告が表示される。

/home/shinichi.tsurunaga/llm_test/ollama1.py:3: LangChainDeprecationWarning: The class `ChatOllama` was deprecated in LangChain 0.3.1 and will be removed in 1.0.0. An updated version of the class exists in the :class:`~langchain-ollama package and should be used instead. To use it run `pip install -U :class:`~langchain-ollama` and import as `from :class:`~langchain_ollama import ChatOllama``.
  llm = ChatOllama(model="command-r-plus")

手順2. Ollma対応Chainlitアプリケーションの作成

app_ollama.pyという名前の新しいファイルを作成し、以下のコードを追加します:

import chainlit as cl
from langchain import PromptTemplate, LLMChain
from langchain.llms import LlamaCpp

from langchain_community.chat_models.ollama import ChatOllama

llm = ChatOllama(model="command-r-plus")
#llm = ChatOllama(model="elyza-llama-2-7b")
#llm = ChatOllama(model="llama3")


@cl.on_message
async def main(message: cl.Message):
    prompt = message.content
    response = llm.invoke(prompt)
    #print(response_message.content)
    await cl.Message(content=response.content).send()

手順3. アプリケーションの実行

ターミナルで以下のコマンドを実行します。

$ chainlit run app_ollama.py -w
...省略...
2024-10-27 17:04:07 - Your app is available at http://localhost:8000

WebブラウザでChainlitインターフェースを開き、チャットボックスにメッセージを入力して対話を開始します。

Ollma: ローカル環境で簡単に大規模言語モデルを実行の備忘録(自分用)

はじめに

サーバー・クライアント方式で動作するOllmaを利用。サーバー側でモデルのロードと推論を実行し、クライアント側でコマンドラインインターフェースの「ollama run」を使って、ローカルLLM環境を構築する。 1台のマシン上で完結する(サーバーとクライアントが同一)場合の基本的な利用の流れの備忘録。

# サーバーの起動(デーモン)
$ ollama serve

# クライアントからモデルを実行
$ ollama run llama2

検証環境

  • Dockerコンテナー(nvidia/cuda:12.6.2-devel-ubuntu24.04)
  • ollama version is 0.3.14

手順1. Ollmaのインストール

Ollamaの公式サイトにアクセスしてインストール方法を確認

ollama.com

Linunxでインストーラーのダウンロードとインストールをワンライナーで実行。

$ curl -fsSL https://ollama.com/install.sh | sudo sh

手順2. Ollamaサーバーの起動

インストール後、サーバーを起動。デフォルトはlocalhostからのみにアクセス制限されており、リモートホストからのリクエストを受け付ける場合や、サービスポートを変更する場合は、追加設定(環境変数OLLAMA_HOST/OLLAMA_ORIGINS)が必要。

# 通常
$ ollama serve

# バックグラウンドとログをファイルに出力
$ ollama serve >> ./ollama.log 2>&1 &

手順3. モデルのダウンロードとデプロイ

サーバーを起動したターミナルとは別のターミナルを開いて、クライアントコマンドを実行して、モデルのダウンロードとデプロイを実行。引数にモデル名を指定。Command R+を利用する場合は次の通り。

$ ollama pull command-r-plus

pull可能なモデルはこちらで確認。 ollama.com

モデルがデプロイされているか確認。

$ ollama list
NAME                       ID              SIZE      MODIFIED   
llama3:latest              365c0bd3c000    4.7 GB    4 days ago    
elyza-llama-2-7b:latest    b81eec55515b    4.1 GB    4 days ago    
command-r-plus:latest      e61b6b184f38    59 GB     5 days ago   

手順4. 対話モード開始

$ ollama run command-r-plus
>>> Send a message (/? for help)

# 終了
>>> /bye

プロンプト「>>>」に続けて指示文を入力。なお、引数に指示文を指定することも可能

$ ollama run command-r-plus 日本の首都はどこにある?
東京です。東京都の中央に位置するのは新宿区で、人口は20195月時点で346千人ほどとなります。

補足 GGUF形式のモデルファイルをインポートする方法

Ollamaは、リポジトリーからモデルをダウンロードできるほか、ローカルにあるモデルのインポートも可能。GGUF形式のモデルファイル(ELYZA-japanese-Llama-2-7b-instruct-q4_K_M.gguf)をインポートするには、

1. Modefileを以下の内容で作成

FROM ./ELYZA-japanese-Llama-2-7b-instruct-q4_K_M.gguf 

2. モデルのインポート

$ ollama create elyza-llama-2-7b -f Modelfile
transferring model data 100% 
using existing layer sha256:e01fd5cfd8517e75e8b95ed6cb621f0c3651d0ee9f302cb5abf6147d6c636610 
creating new layer sha256:ef8b079672c32053a61b8f95ee17ba47dce3624f561910d96d1f3de6ce6b45f3 
writing manifest 
success 

3. インポートに成功しているか確認

$ ollama list
NAME                       ID              SIZE      MODIFIED       
elyza-llama-2-7b:latest    b81eec55515b    4.1 GB    13 seconds ago    
command-r-plus:latest      e61b6b184f38    59 GB     8 hours ago