In [1]:
!wget https://ollama.com/install.sh
--2025-04-08 11:14:56-- https://ollama.com/install.sh Resolving ollama.com (ollama.com)... 34.36.133.15 Connecting to ollama.com (ollama.com)|34.36.133.15|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 13281 (13K) [text/html] Saving to: ‘install.sh.1’ install.sh.1 100%[===================>] 12.97K --.-KB/s in 0s 2025-04-08 11:14:56 (137 MB/s) - ‘install.sh.1’ saved [13281/13281]
In [ ]:
bash install.sh
使い方¶
In [5]:
# Llama-3-ELYZA-JP-8B を使ってみる。
!wget https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/resolve/main/Llama-3-ELYZA-JP-8B-q4_k_m.gguf?download=true
--2025-04-08 11:47:10-- https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/resolve/main/Llama-3-ELYZA-JP-8B-q4_k_m.gguf?download=true Resolving huggingface.co (huggingface.co)... 18.65.125.90, 18.65.125.26, 18.65.125.93, ... Connecting to huggingface.co (huggingface.co)|18.65.125.90|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://cdn-lfs-us-1.hf.co/repos/80/7f/807fec5de4cee0fc1fd14bbc16cc7400eb94941e148fe2f7348a932e8a7b4d7f/91553c45080b11d95be21bb67961c9a5d2ed7556275423efaaad6df54ba9beae?response-content-disposition=attachment%3B+filename*%3DUTF-8%27%27Llama-3-ELYZA-JP-8B-q4_k_m.gguf%3B+filename%3D%22Llama-3-ELYZA-JP-8B-q4_k_m.gguf%22%3B&Expires=1744084034&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0NDA4NDAzNH19LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy11cy0xLmhmLmNvL3JlcG9zLzgwLzdmLzgwN2ZlYzVkZTRjZWUwZmMxZmQxNGJiYzE2Y2M3NDAwZWI5NDk0MWUxNDhmZTJmNzM0OGE5MzJlOGE3YjRkN2YvOTE1NTNjNDUwODBiMTFkOTViZTIxYmI2Nzk2MWM5YTVkMmVkNzU1NjI3NTQyM2VmYWFhZDZkZjU0YmE5YmVhZT9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPSoifV19&Signature=JvCYN%7E0s5iJMNJNpedMg-FTq3taU-UCgHD4Ww23HnmoCVhTtHrU%7E5O1mKJY%7Efd9YinIv1jCFD09S7Wv4o0Jk2FbDtzjDctqvgEBZ-af0QNAoE8KxAQ5iwfnvpsP90PWhveiVkEZPYr4xHlSHgtfXUf057cn98prz2LyqN4F2gXXSSDDygX3syc1oXpKFglsp3gy2A-Ynsex2mLqOV5aIWeiQ8sVKAl6QZGkjsPC5ygqcm-oIG4hf0PGEN1phDy5iytVnnV3ZpD9Jlv1%7EtjUzOzqBCLOVk3yplGLkgKVjb9SpNC2jYXYwPf2ADIZoOUQLJWUaVduLKvMTLNM8EoELOw__&Key-Pair-Id=K24J24Z295AEI9 [following] --2025-04-08 11:47:11-- https://cdn-lfs-us-1.hf.co/repos/80/7f/807fec5de4cee0fc1fd14bbc16cc7400eb94941e148fe2f7348a932e8a7b4d7f/91553c45080b11d95be21bb67961c9a5d2ed7556275423efaaad6df54ba9beae?response-content-disposition=attachment%3B+filename*%3DUTF-8%27%27Llama-3-ELYZA-JP-8B-q4_k_m.gguf%3B+filename%3D%22Llama-3-ELYZA-JP-8B-q4_k_m.gguf%22%3B&Expires=1744084034&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0NDA4NDAzNH19LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy11cy0xLmhmLmNvL3JlcG9zLzgwLzdmLzgwN2ZlYzVkZTRjZWUwZmMxZmQxNGJiYzE2Y2M3NDAwZWI5NDk0MWUxNDhmZTJmNzM0OGE5MzJlOGE3YjRkN2YvOTE1NTNjNDUwODBiMTFkOTViZTIxYmI2Nzk2MWM5YTVkMmVkNzU1NjI3NTQyM2VmYWFhZDZkZjU0YmE5YmVhZT9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPSoifV19&Signature=JvCYN%7E0s5iJMNJNpedMg-FTq3taU-UCgHD4Ww23HnmoCVhTtHrU%7E5O1mKJY%7Efd9YinIv1jCFD09S7Wv4o0Jk2FbDtzjDctqvgEBZ-af0QNAoE8KxAQ5iwfnvpsP90PWhveiVkEZPYr4xHlSHgtfXUf057cn98prz2LyqN4F2gXXSSDDygX3syc1oXpKFglsp3gy2A-Ynsex2mLqOV5aIWeiQ8sVKAl6QZGkjsPC5ygqcm-oIG4hf0PGEN1phDy5iytVnnV3ZpD9Jlv1%7EtjUzOzqBCLOVk3yplGLkgKVjb9SpNC2jYXYwPf2ADIZoOUQLJWUaVduLKvMTLNM8EoELOw__&Key-Pair-Id=K24J24Z295AEI9 18.65.100.115, 18.65.100.80, 18.65.100.50, ...co)... Connecting to cdn-lfs-us-1.hf.co (cdn-lfs-us-1.hf.co)|18.65.100.115|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 4920733984 (4.6G) [binary/octet-stream] Saving to: ‘Llama-3-ELYZA-JP-8B-q4_k_m.gguf?download=true’ Llama-3-ELYZA-JP-8B 100%[===================>] 4.58G 72.3MB/s in 66s 2025-04-08 11:48:17 (71.2 MB/s) - ‘Llama-3-ELYZA-JP-8B-q4_k_m.gguf?download=true’ saved [4920733984/4920733984]
In [14]:
!mv Llama-3-ELYZA-JP-8B-q4_k_m.gguf* Llama-3-ELYZA-JP-8B-q4_k_m.gguf
Modelfile 作成¶
Modelfile を作成。
In [ ]:
!touch Modelfile
作成された Modelfile に、下記を記載する。
FROM ./Llama-3-ELYZA-JP-8B-q4_k_m.gguf
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"
ollama のモデル作成¶
In [15]:
!ollama create elyza:jp8b -f Modelfile
gathering model components ⠙ gathering model components ⠹ gathering model components ⠹ gathering model components ⠼ gathering model components ⠼ gathering model components ⠦ gathering model components ⠦ gathering model components ⠇ gathering model components ⠏ gathering model components ⠋ gathering model components ⠙ gathering model components ⠹ gathering model components ⠸ gathering model components ⠼ gathering model components ⠴ gathering model components ⠦ gathering model components ⠧ gathering model components ⠇ gathering model components ⠏ gathering model components ⠏ gathering model components ⠙ gathering model components ⠹ gathering model components ⠸ gathering model components ⠼ gathering model components ⠴ gathering model components ⠦ gathering model components ⠧ gathering model components ⠇ gathering model components ⠏ gathering model components ⠋ gathering model components ⠙ gathering model components ⠹ gathering model components ⠸ gathering model components ⠼ gathering model components ⠴ gathering model components ⠦ gathering model components ⠧ gathering model components ⠇ gathering model components ⠏ gathering model components ⠋ gathering model components ⠙ gathering model components ⠙ gathering model components ⠸ gathering model components ⠼ gathering model components ⠴ gathering model components ⠦ gathering model components ⠧ gathering model components ⠇ gathering model components ⠏ gathering model components ⠋ gathering model components ⠋ gathering model components ⠙ gathering model components ⠹ gathering model components ⠼ gathering model components ⠼ gathering model components ⠦ gathering model components ⠦ gathering model components ⠇ gathering model components ⠇ gathering model components ⠏ gathering model components ⠋ gathering model components ⠙ gathering model components ⠸ gathering model components ⠼ gathering model components ⠴ gathering model components ⠦ gathering model components gathering model components 5d2ed7556275423efaaad6df54ba9beae 0% ⠋ gathering model components 5d2ed7556275423efaaad6df54ba9beae 1% ⠙ gathering model components 5d2ed7556275423efaaad6df54ba9beae 3% ⠹ gathering model components 5d2ed7556275423efaaad6df54ba9beae 5% ⠸ gathering model components 5d2ed7556275423efaaad6df54ba9beae 7% ⠼ gathering model components 5d2ed7556275423efaaad6df54ba9beae 9% ⠴ gathering model components 5d2ed7556275423efaaad6df54ba9beae 11% ⠦ gathering model components 5d2ed7556275423efaaad6df54ba9beae 13% ⠧ gathering model components 5d2ed7556275423efaaad6df54ba9beae 14% ⠇ gathering model components 5d2ed7556275423efaaad6df54ba9beae 16% ⠏ gathering model components 5d2ed7556275423efaaad6df54ba9beae 17% ⠋ gathering model components 5d2ed7556275423efaaad6df54ba9beae 20% ⠙ gathering model components 5d2ed7556275423efaaad6df54ba9beae 22% ⠹ gathering model components 5d2ed7556275423efaaad6df54ba9beae 23% ⠸ gathering model components 5d2ed7556275423efaaad6df54ba9beae 25% ⠼ gathering model components 5d2ed7556275423efaaad6df54ba9beae 27% ⠴ gathering model components 5d2ed7556275423efaaad6df54ba9beae 30% ⠦ gathering model components 5d2ed7556275423efaaad6df54ba9beae 31% ⠧ gathering model components 5d2ed7556275423efaaad6df54ba9beae 33% ⠇ gathering model components 5d2ed7556275423efaaad6df54ba9beae 34% ⠏ gathering model components 5d2ed7556275423efaaad6df54ba9beae 36% ⠋ gathering model components 5d2ed7556275423efaaad6df54ba9beae 39% ⠙ gathering model components 5d2ed7556275423efaaad6df54ba9beae 40% ⠹ gathering model components 5d2ed7556275423efaaad6df54ba9beae 42% ⠸ gathering model components 5d2ed7556275423efaaad6df54ba9beae 44% ⠼ gathering model components 5d2ed7556275423efaaad6df54ba9beae 46% ⠴ gathering model components 5d2ed7556275423efaaad6df54ba9beae 47% ⠦ gathering model components 5d2ed7556275423efaaad6df54ba9beae 50% ⠧ gathering model components 5d2ed7556275423efaaad6df54ba9beae 51% ⠇ gathering model components 5d2ed7556275423efaaad6df54ba9beae 53% ⠏ gathering model components 5d2ed7556275423efaaad6df54ba9beae 55% ⠋ gathering model components 5d2ed7556275423efaaad6df54ba9beae 56% ⠙ gathering model components 5d2ed7556275423efaaad6df54ba9beae 58% ⠹ gathering model components 5d2ed7556275423efaaad6df54ba9beae 61% ⠸ gathering model components 5d2ed7556275423efaaad6df54ba9beae 63% ⠼ gathering model components 5d2ed7556275423efaaad6df54ba9beae 63% ⠴ gathering model components 5d2ed7556275423efaaad6df54ba9beae 64% ⠦ gathering model components 5d2ed7556275423efaaad6df54ba9beae 64% ⠧ gathering model components 5d2ed7556275423efaaad6df54ba9beae 64% ⠇ gathering model components 5d2ed7556275423efaaad6df54ba9beae 66% ⠏ gathering model components 5d2ed7556275423efaaad6df54ba9beae 67% ⠋ gathering model components 5d2ed7556275423efaaad6df54ba9beae 69% ⠙ gathering model components 5d2ed7556275423efaaad6df54ba9beae 72% ⠹ gathering model components 5d2ed7556275423efaaad6df54ba9beae 74% ⠸ gathering model components 5d2ed7556275423efaaad6df54ba9beae 75% ⠼ gathering model components 5d2ed7556275423efaaad6df54ba9beae 77% ⠴ gathering model components 5d2ed7556275423efaaad6df54ba9beae 78% ⠦ gathering model components 5d2ed7556275423efaaad6df54ba9beae 80% ⠧ gathering model components 5d2ed7556275423efaaad6df54ba9beae 83% ⠇ gathering model components 5d2ed7556275423efaaad6df54ba9beae 85% ⠏ gathering model components 5d2ed7556275423efaaad6df54ba9beae 86% ⠋ gathering model components 5d2ed7556275423efaaad6df54ba9beae 88% ⠙ gathering model components 5d2ed7556275423efaaad6df54ba9beae 89% ⠹ gathering model components 5d2ed7556275423efaaad6df54ba9beae 91% ⠸ gathering model components 5d2ed7556275423efaaad6df54ba9beae 94% ⠼ gathering model components 5d2ed7556275423efaaad6df54ba9beae 95% ⠴ gathering model components 5d2ed7556275423efaaad6df54ba9beae 97% ⠦ gathering model components 5d2ed7556275423efaaad6df54ba9beae 99% ⠧ copying file sha256:91553c45080b11d95be21bb67961c9a5d2ed7556275423efaaad6df54ba9beae 100% parsing GGUF using existing layer sha256:91553c45080b11d95be21bb67961c9a5d2ed7556275423efaaad6df54ba9beae creating new layer sha256:8ab4849b038cf0abc5b1c9b8ee1443dca6b93a045c2272180d985126eb40bf6f creating new layer sha256:c0aac7c7f00d8a81a8ef397cd78664957fbe0e09f87b08bc7afa8d627a8da87f writing manifest success
モデルの実行¶
In [17]:
!pip install ollama
Collecting ollama Downloading ollama-0.4.7-py3-none-any.whl.metadata (4.7 kB) Requirement already satisfied: httpx<0.29,>=0.27 in /opt/jupyterlab/venv/lib/python3.10/site-packages (from ollama) (0.28.1) Collecting pydantic<3.0.0,>=2.9.0 (from ollama) Downloading pydantic-2.11.2-py3-none-any.whl.metadata (64 kB) Requirement already satisfied: anyio in /opt/jupyterlab/venv/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (4.8.0) Requirement already satisfied: certifi in /opt/jupyterlab/venv/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (2025.1.31) Requirement already satisfied: httpcore==1.* in /opt/jupyterlab/venv/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (1.0.7) Requirement already satisfied: idna in /opt/jupyterlab/venv/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (3.10) Requirement already satisfied: h11<0.15,>=0.13 in /opt/jupyterlab/venv/lib/python3.10/site-packages (from httpcore==1.*->httpx<0.29,>=0.27->ollama) (0.14.0) Collecting annotated-types>=0.6.0 (from pydantic<3.0.0,>=2.9.0->ollama) Downloading annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB) Collecting pydantic-core==2.33.1 (from pydantic<3.0.0,>=2.9.0->ollama) Downloading pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB) Requirement already satisfied: typing-extensions>=4.12.2 in /opt/jupyterlab/venv/lib/python3.10/site-packages (from pydantic<3.0.0,>=2.9.0->ollama) (4.12.2) Collecting typing-inspection>=0.4.0 (from pydantic<3.0.0,>=2.9.0->ollama) Downloading typing_inspection-0.4.0-py3-none-any.whl.metadata (2.6 kB) Requirement already satisfied: exceptiongroup>=1.0.2 in /opt/jupyterlab/venv/lib/python3.10/site-packages (from anyio->httpx<0.29,>=0.27->ollama) (1.2.2) Requirement already satisfied: sniffio>=1.1 in /opt/jupyterlab/venv/lib/python3.10/site-packages (from anyio->httpx<0.29,>=0.27->ollama) (1.3.1) Downloading ollama-0.4.7-py3-none-any.whl (13 kB) Downloading pydantic-2.11.2-py3-none-any.whl (443 kB) Downloading pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 25.5 MB/s eta 0:00:00 Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB) Downloading typing_inspection-0.4.0-py3-none-any.whl (14 kB) Installing collected packages: typing-inspection, pydantic-core, annotated-types, pydantic, ollama Successfully installed annotated-types-0.7.0 ollama-0.4.7 pydantic-2.11.2 pydantic-core-2.33.1 typing-inspection-0.4.0
In [27]:
from ollama import chat
from ollama import ChatResponse
response: ChatResponse = chat(model='elyza:jp8b', messages=[
{
'role': 'system',
'content': 'あなたは誠実で優秀な日本人のアシスタントです。特に指示が無い場合は、常に日本語で回答してください。',
},
{
'role': 'user',
'content': 'D言語で、フィボナッチ数列を実装してください。',
},
])
print(response['message']['content'])
D言語でフィボナッチ数列を実装する方法は以下の通りです。 ```d import std.array; import std.algorithm; void main() { int[10001] fib = [0, 1]; for (int i = 2; i < 10001; i++) fib[i] = fib[i-1] + fib[i-2]; writeln(fib[40]); // フィボナッチ数列の40番目の数字を出力 } ``` このプログラムは、フィボナッチ数列を生成し、40番目の数を出力します。D言語はメモリ安全性に配慮した言語で、動的メモリ割り当てが可能です。 上記のプログラムでは、int[10001]という大きな配列を確保していて、fib[i-1]とfib[i-2]を足し合わせることで、i番目のフィボナッチ数を計算しています。