小さな大規模言語モデルが色々出て来ているようです。Ollamaを使うと、ツヨツヨGPUがない環境でも比較的簡単に動かすことができます。
最近登場したgpt-ossや、Gemma 3 270Mなども使えます
Ollama使ってみる
公式ダウンロードページにインストーラーが用意されているのでこれをインストールするだけです。
Windowsの場合、Ollamaアプリを起動するとタスクバーに常駐します。(これを終了するとOllamaも終了します)
アイコンがかわいい。。癒やされる。。
私のパソコンはスペック控えめなので、とてもサイズの小さいQwen 3の0.6Bモデルを使います。めっちゃ小さい!
コマンドでモデルを取得してみます。
ollama pull qwen3:0.6b
pulling manifest
pulling 7f4030143c1c: 100% ▕██████████████████████████████████████████████████████████▏ 522 MB
pulling ae370d884f10: 100% ▕██████████████████████████████████████████████████████████▏ 1.7 KB
pulling d18a5cc71b84: 100% ▕██████████████████████████████████████████████████████████▏ 11 KB
pulling cff3f395ef37: 100% ▕██████████████████████████████████████████████████████████▏ 120 B
pulling b0830f4ff6a0: 100% ▕██████████████████████████████████████████████████████████▏ 490 B
verifying sha256 digest
writing manifest
success
コマンドでチャットができます。
ollama run qwen3:0.6b
Strands Agentsから使ってみる
Strands AgentsはAWSが開発しOSSで公開しているAIエージェント開発のフレームワークです。イチオシです。
Strands Agentsから、Ollamaでホスティングしたモデルを呼び出してみましょう。
uvを使いますので公式ドキュメントに沿ってインストールしてください。
プロジェクトを作成します。
uv init --python 3.11 --name strands-ollama
Strands Agentsを追加します。
uv add strands-agents[ollama]
[ollama]を指定することで、Ollamaを呼び出す際に必要な追加ライブラリーも一緒に導入できます。
Pythonのコードを作成します。最もシンプルなコードがこちらです。
from strands import Agent
from strands.models.ollama import OllamaModel
model = OllamaModel(
host="http://localhost:11434",
model_id="qwen3:0.6b",
)
agent = Agent(model=model)
agent("こんにちは")
これだけです。すごいですね。
実行してみましょう。
uv run main.py
<think>
Okay, the user said "こんにちは" which is "Hello" in Japanese. I need to respond appropriately. First, I should acknowledge their greeting. Maybe say "Hello!" and then offer assistance. Let me check if there's any specific context I should consider, but since there's no additional info, just a friendly response is best. Make sure the tone is positive and open-ended.
</think>こんにちは!どうすればいいか?何かお求めですか?😊
今頃気づきましたが、Thinkingモデルなんですね!
Bedrock AgentCore Runtimeへのデプロイに挑戦!
やったらできたよ!ってだけで想定された使い方ではない可能性が高いです
ローカルで動作させることができました!
モデルサイズも小さいので、AWSにデプロイできたりしないかと思いまして、最近発表されたBedrock AgentCoreへのデプロイに挑戦しました!(ブログ作成時点でプレビュー機能です)
AgentCore RuntimeはAgentCoreの機能の一つで、AIエージェントの実行環境をサーバーレスで提供してくれます。ここにOllamaとStrands Agentsで作ったアプリをデプロイします。
Strands AgentsアプリをAgentCore Runtimeに対応させる
ここから先のWSL2上で行った手順になってます
Strands AgentsのアプリをAgentCore Runtimeに対応させるには、まず、bedrock-agentcoreライブラリーをインストールします。
uv add bedrock-agentcore
そして、このような形でStrands Agentsの機能をAPI化します。
from bedrock_agentcore import BedrockAgentCoreApp
from strands import Agent
from strands.models.ollama import OllamaModel
app = BedrockAgentCoreApp()
model = OllamaModel(
host="http://localhost:11434",
model_id="qwen3:0.6b",
)
agent = Agent(model=model)
@app.entrypoint
async def agent_invocation(payload):
"""Handler for agent invocation"""
user_message = payload.get(
"prompt",
"No prompt found in input, please guide customer to create a json payload with prompt key",
)
stream = agent.stream_async(user_message)
async for event in stream:
yield (event["event"])
if __name__ == "__main__":
app.run()
AgentCore Runtimeへデプロイする前にローカルPC上で動作確認します。
uv run main.py
Webサーバーが起動しますので、別の端末を起動し、cURLでリクエストを送信します。
curl -X POST http://localhost:8080/invocations \
-H "Content-Type: application/json" \
-d '{
"prompt": "こんにちは"
}'
AgentCore Runtimeへデプロイするためにコンテナ化する
AgentCore Runtimeへデプロイするには、Strands Agentsアプリをコンテナ化する必要があります。色々試行錯誤したので、その点を抜粋して紹介します。
ソースコードはGitHubで公開済みですので、細かな点はこちらを参照ください。
試行錯誤1)一つのコンテナ内に、2つのWebサーバーを起動させたい
Ollama自体がWebサーバーの形式を取っており、更にAgentCore Runtimeから呼び出されるStrands AgentsもWebサーバーとして起動する形になります。なので、一つのコンテナ内に2つのWebサーバーを起動させる必要があります。
調べると、supervisorを使うと実現できるとのことでした。
supervisorの設定ファイルを作成します。
Dockerfileで以下の手順を記述します
- supervisorのインストール
- supervisorの設定ファイルをコピー
- CMDで起動
(内容と関係ないですが)GitHubのソース埋め込み超便利!
試行錯誤2)モデルを任意の場所に取得する
Qwen 3のモデルをコンテナ内に含めたかったので、まずはモデルのダウンロード先を指定します。モデルのダウンロード先は環境変数``で指定可能です。
# Ollamaが起動していない状態でセット
export OLLAMA_MODELS=`pwd`/.ollama/models
# Ollamaを起動
ollama serve
別の端末でollama pull qwen3:0.6bを行うと、.ollama/modelsディレクトリにモデルがダウンロードされます。
試行錯誤3)AgentCore Runtimeに登録できるコンテナイメージは1GBまで
AgentCore Runtimeに登録できるコンテナイメージのサイズは1GBまでです。
超過するとAgentCore Runtimeの作成時にエラーとなります。
qwen3:0.6bのサイズは513MBと1GBに収まっているのですが、そもそもOllamaをインストールすると1GBを超えてしまいます。(T_T)
(AgentCore Runtimeの動作環境はarm64環境です)
環境によってはインストーラーのサイズが異なるので、なにかいい手はないかと調べました。
すると、インストールされるファイルの中にCUDA環境用のライブラリーが含まれており、これらがかなりのサイズになっていることがわかりました。これらをバッサリ削除します!(消しても動いたので大丈夫!?)
こちらのビルド手順ドキュメントに、If the libraries are not found, Ollama will not run with any acceleration librariesとあったので、ライブラリーがなくても動作は可能と判断しました。
ちなみにですが、以下のように記述してもコンテナのサイズは減りませんでしたので、インストールとファイル削除を、「一つのRUNコマンド」で行う必要があります。
RUN curl -fsSL https://ollama.com/install.sh | sh
RUN rm -rf /usr/local/lib/ollama/cuda_sbsa
AgentCore Runtimeにデプロイできた!
ソースができたら、コンテナイメージをビルドし、ECRにプッシュします。
手順はこんな感じです。
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
AWS_REGION=us-west-2
AGENT_NAME=agentcore-ollama
docker buildx create --use
aws ecr create-repository --repository-name ${AGENT_NAME} --region ${AWS_REGION}
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com
docker buildx build --platform linux/arm64 -t ${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${AGENT_NAME}:latest --push .
ECRへプッシュができたら、マネジメントコンソールでAgentCore Runtimeを作成します。
メニューの「Agent sandbox」からテスト実行が可能です。
テストが成功したので、最後にStreamlitで画面を作成しました。
動作している様子はこんな感じです。
動作はしますが、時間がかかりますね。。
まとめ
AgentCore RuntimeでGPUが使えるようになって、コンテナサイズの上限が緩和されると夢が広がりますね!
ソースコードはこちらです。
エージェントの動作は、少し色気を出して、こちらのブログで紹介されている「Strands AgentsとTavilyを使って動的ウェブリサーチエージェントを作る」のコードを参考にしました。






