SEが最近起こったことを書くブログ

ITエンジニアが試したこと、気になったことを書いていきます。

Google Colab上でollamaでGPUを活用してc4ai-command-r-plus-ggufを動かしてみた

Google Colab上でollamaでGPUを活用してc4ai-command-r-plus-ggufを動かしてみたので、メモ。

※A100とL4で動作することを確認

まずは、ollamaをインストール

!curl https://ollama.ai/install.sh | sh

!echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections
!sudo apt-get update && sudo apt-get install -y cuda-drivers

import os

# Set LD_LIBRARY_PATH so the system NVIDIA library
os.environ.update({'LD_LIBRARY_PATH': '/usr/lib64-nvidia'})

ollama run で用意されたモデルを動かすとエラーになるので、ggufからカスタムモデルを作る。 利用するカスタムモデルをダウンロード

!wget https://huggingface.co/<利用したいモデルのパス>

カスタムモデルを作成するための、modelファイルを作成。

テキストエディタなどで作成したファイルをアップロードしてもOK。

ストップトークンを設定しないと、発話が終わらないので注意

# ファイルパス
_filepath = './Modelfile'

# ファイルに書き込む内容
filecontents = """
FROM ./<ダウンロードしたファイルの名前>

TEMPLATE \"\"\"{{ if .System }}<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>{{ .System }}<|END_OF_TURN_TOKEN|>{{ end }}{{ if .Prompt }}<|START_OF_TURN_TOKEN|><|USER_TOKEN|>{{ .Prompt }}<|END_OF_TURN_TOKEN|>{{ end }}<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>{{ .Response }}<|END_OF_TURN_TOKEN|> \"\"\"

PARAMETER stop "<|START_OF_TURN_TOKEN|>"
PARAMETER stop "<|END_OF_TURN_TOKEN|>"

"""

# 書き込みモード
with open(_filepath, 'w') as f:
  # ファイル作成、書き込み
  f.write(filecontents)

以下のコマンドを実行し、カスタムモデルを作成

!nohup ollama serve &
!ollama create <カスタムモデルの名前> -f Modelfile

pythonからollamaを使うためにpip install

!pip install ollama

プログラムから利用

import ollama

response = ollama.chat(model='<カスタムモデルの名前>', messages=[
  {
    'role': 'user',
    'content': 'こんにちは',
  },
])
print(response['message']['content'])

参考にしたページ

カスタムモデルの作り方は以下を参考にした github.com

Modelファイルのテンプレート、パラメータは以下を参考にした ollama.com

Google Colabへのollamaのインストールは以下の記事を参考にさせていただきました qiita.com