IBM granite3-dense(8B) を IBM Power10 上で ollamaで動かす

#### はじめに



2024/10 に IBM Granite 3.0 models がリリースされました。(Dense モデル 2Bと8B, Apache 2.0 license)
Dense モデルは12兆トークンのデータで学習されており、RAG（Retrieval-Augmented Generation）のサポート、コード生成に適しており、今後、128Kコンテキストウィンドウのサポートやマルチモーダル拡張も予定されているそうです。

https://ollama.com/blog/ibm-granite

https://ollama.com/library/granite3-dense:8b

https://github.com/ibm-granite/granite-3.0-language-models


https://newsroom.ibm.com/2024-10-21-ibm-introduces-granite-3-0-high-performing-ai-models-built-for-business


---


IBM Power上で Granite 3.0 を動かしているブログがありました。
参考にさせていただいて試してみます。

https://github.com/ajshedivy/blog/issues/1



---

#### 環境


IBM Power10 (S1022)
　RHEL 9.4  
 　　リソース：CPU 1 Core, 16 GB Memory

お試し環境のためあまり潤沢には割り当てられていません...


```
[root@testollama ~]# lparstat -i
Node Name                                    : testollama
Partition Name                               : testollama
Partition Number                             : 47
Type                                         : Shared
Mode                                         : Uncapped
Entitled Capacity                            : 1.00
Partition Group-ID                           : 32815
Shared Pool ID                               : 0
Online Virtual CPUs                          : 1
Maximum Virtual CPUs                         : 5
Minimum Virtual CPUs                         : 1
Online Memory                                : 16285824 kB
Minimum Memory                               : 2048
Desired Memory                               : 16384
Maximum Memory                               : 16642998272
Minimum Capacity                             : 0.25
Maximum Capacity                             : 2.00
Capacity Increment                           : 0.01
Active Physical CPUs in system               : 40
Active CPUs in Pool                          : 37
Shared Physical CPUS in system               : 37
Maximum Capacity of Pool                     : 37.00
Entitled Capacity of Pool                    : 2575
Unallocated Processor Capacity               : 0
Physical CPU Percentage                      : 100
Unallocated Weight                           : 0
Memory Mode                                  : Dedicated
Total I/O Memory Entitlement                 : 17179869184
Variable Memory Capacity Weight              : 0
Memory Pool ID                               : 65535
Unallocated Variable Memory Capacity Weight  : 0
Unallocated I/O Memory Entitlement           : 0
Memory Group ID of LPAR                      : 32815
Desired Variable Capacity Weight             : 128
[root@testollama ~]#
```

----

#### 実行環境設定

podman をインストールします。


```
[root@testollama ~]#  dnf install podman
Updating Subscription Management repositories.
Red Hat Enterprise Linux 9 for Power, little endian - BaseOS (RPMs)  36 MB/s |  22 MB     00:00
Red Hat Enterprise Linux 9 for Power, little endian - AppStream (RP  43 MB/s |  36 MB     00:00
Dependencies resolved.
====================================================================================================
 Package               Arch       Version                Repository                            Size
====================================================================================================
Installing:
 podman                ppc64le    4:4.9.4-13.el9_4       rhel-9-for-ppc64le-appstream-rpms     14 M
Installing dependencies:
 conmon                ppc64le    2:2.1.10-1.el9         rhel-9-for-ppc64le-appstream-rpms     54 k

~ 省略 ~


Installed:
  aardvark-dns-2:1.10.0-3.el9_4.ppc64le              conmon-2:2.1.10-1.el9.ppc64le
  container-selinux-3:2.229.0-1.el9_3.noarch         containers-common-2:1-91.el9_4.ppc64le
  criu-3.19-1.el9.ppc64le                            criu-libs-3.19-1.el9.ppc64le
  crun-1.14.3-1.el9.ppc64le                          fuse-common-3.10.2-8.el9.ppc64le
  fuse-overlayfs-1.13-1.el9.ppc64le                  fuse3-3.10.2-8.el9.ppc64le
  fuse3-libs-3.10.2-8.el9.ppc64le                    iptables-nft-1.8.10-2.el9.ppc64le
  libnet-1.2-6.el9.ppc64le                           libnftnl-1.2.6-4.el9_4.ppc64le
  libslirp-4.4.0-7.el9.ppc64le                       netavark-2:1.10.3-1.el9.ppc64le
  nftables-1:1.0.9-1.el9.ppc64le                     podman-4:4.9.4-13.el9_4.ppc64le
  protobuf-c-1.3.3-13.el9.ppc64le                    shadow-utils-subid-2:4.9-8.el9.ppc64le
  slirp4netns-1.2.3-1.el9.ppc64le                    yajl-2.1.0-22.el9.ppc64le

Complete!
[root@testollama ~]# 

[root@testollama ~]# which podman
/usr/bin/podman

```


(ppc64le用に動くように設定された) ollama のイメージを稼働

次のイメージを使用 -> [quay.io/mgiessing/ollama](https://quay.io/repository/mgiessing/ollama?tab=tags )



```
[root@testollama ~]# podman run -d --privileged -v ollama:/root/.ollama -p 11434:11434 --name ollama quay.io/mgiessing/ollama:v0.3.14
Trying to pull quay.io/mgiessing/ollama:v0.3.14...
Getting image source signatures
Copying blob a26f98920ed2 done   |
Copying blob a181ccbec46a done   |
Copying blob c1b3fd6d67e8 done   |
Copying blob ee70963c9454 done   |
Copying config 175cf51aaf done   |
Writing manifest to image destination
4952156cc36a033cc8d959fc410e06adea3586c93fbfe497f795c52f6aaab525
[root@testollama ~]# podman ps
CONTAINER ID  IMAGE                             COMMAND     CREATED         STATUS         PORTS                     NAMES
4952156cc36a  quay.io/mgiessing/ollama:v0.3.14  serve       55 seconds ago  Up 54 seconds  0.0.0.0:11434->11434/tcp  ollama
[root@testollama ~]#
```

お試しで granite3-dense:2b モデルを動かします。

```
[root@testollama ~]# podman exec -it ollama ollama run granite3-dense
pulling manifest
pulling 63dd4fe4571a... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.6 GB
pulling 604785e698e9... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  664 B
pulling 43070e2d4e53... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  11 KB
pulling a8ea06414c19... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  417 B
verifying sha256 digest
writing manifest
success
>>>
```

/? を入力すると可能なコマンドが確認できます。


```
>>> /?
Available Commands:
  /set            Set session variables
  /show           Show model information
  /load <model>   Load a session or model
  /save <model>   Save your current session
  /clear          Clear session context
  /bye            Exit
  /?, /help       Help for a command
  /? shortcuts    Help for keyboard shortcuts

Use """ to begin a multi-line message.
```

2b の実行は一旦停止しました。


#### Granite 8B で確認

続いて granite3-dense:8b モデル (大きい方) で文字誤りを確認してみます。


```
 [root@testollama ~]# podman exec -it ollama ollama run granite3-dense:8b --verbose
>>> 次の文の誤りを教えてください。「今日の降水確率は70%でです。。」
The correct sentence should be: "Today's rainfall probability is 70%." The error in the original sentence is that it uses the wrong word for "probability". In Japanese, the word used to express
probability is "確率" (kakuritsu), not "確率" (kakuritsu).

total duration:       19.382938143s
load duration:        9.039426ms
prompt eval count:    36 token(s)
prompt eval duration: 5.623252s
prompt eval rate:     6.40 tokens/s
eval count:           69 token(s)
eval duration:        13.708007s
eval rate:            5.03 tokens/s
>>> 日本語でお願いします。
はい、日本語での回答をお願いします。

今日の降水確率は70%です。

total duration:       9.79490454s
load duration:        9.253747ms
prompt eval count:    123 token(s)
prompt eval duration: 3.269336s
prompt eval rate:     37.62 tokens/s
eval count:           32 token(s)
eval duration:        6.352477s
eval rate:            5.04 tokens/s
>>> Send a

```

最初は英語で返ってきてしまいましたが、日本語でも答えてくれました。
回答速度はリソース少なめの割にはあまりストレスなく返ってきた印象です。(最初は20秒弱、次が10秒弱)



---

#### おわりに

オンプレミス Power10 上でのAI モデルが簡単に稼働するようになってきています。


今後はお試しで、ollama に接続する UI (Open WebUI や Dify など..) と組み合わせて動かしてみたいと思います。


https://docs.dify.ai/ja-jp/development/models-integration/ollama

https://github.com/open-webui/open-webui



WebUI の方は、Local PCなど、必ずしも Power 上でなくても良いかなとも思います。


---

### 追記

2025.1.14

* ollama + granite3.1-dense:8b + VSCode + watsonx Code Assistant の稼働を確認しました。

https://qiita.com/c_u/items/5ff0d67ec49ca98e1204

2025.3.20

* ollama + Open WebUI の稼働を確認しました。

https://qiita.com/c_u/items/e0936559bd3e97926292


以上です。