OllamaでGemmaをローカル実行!日本語処理とプログラミング能力を試してみた
先日DeepmindからオープンソースモデルGemmaがリリースされました。大規模言語モデルをローカルで簡単に実行できるツールOllamaかGemmaを利用してみます。
Ollamaの使い方については以下の記事でも説明しています。
手順
Ollamaのダウンロード&インストール
# ColabのCPUのみの環境でテストしました
curl -fsSL https://ollama.com/install.sh | sh
Ollamaを起動 (Colabターミナルで実行)
# サーバーの起動
ollama serve &
# gemma:7bを指定してOllamaを起動
ollama run gemma:7b
このままターミナルからpromptの実行が可能ですが、今回は以下を参考にLangChainから試しました。
!pip install langchain-community
from langchain_community.llms import Ollama
llm = Ollama(model="gemma:7b")
日本語に対応しているか日本語の質問を試してみました。
llm.invoke("日本の最高峰は?")
日本の最高峰は富士山です。富士山は標高3,776メートルに達します。
次はプログラミングの能力を試してみます。
llm.invoke("Pythonで、与えられたリストから重複する要素を取り除き、重複のない要素のみを含む新しいリストを返す関数を書いてください。")
以下Gemmaの出力です(ColabのCPU環境で実行時間は9m37s)。このコードは正しく実行できました。
def remove_duplicates(lst):
"""Pythonで、与えられたリストから重複する要素を取り除き、重複のない要素のみを含む新しいリストを返す関数"""
# setオブジェクトを使用して、重複する要素を削除する
unique_elements = list(set(lst))
# unique_elementsを返す
return unique_elements
# 例
lst = [1, 2, 3, 2, 4, 5, 4, 6]
unique_lst = remove_duplicates(lst)
print(unique_lst) # Output: [1, 2, 3, 4, 5, 6]
解説:
`remove_duplicates()` 関数は、リスト `lst` を入力します。
`set()` 関数を使用して、 `lst` の要素をセットに移動します。
*セットは、ユニークな要素のみを含む集合です。`list()` 関数を使用して、セットの要素を新しいリスト `unique_elements` に変換します。
`unique_elements` を返す
時間 complexity:
`set()` 操作の時間complexityは、リストのサイズに比例します。
リストのサイズが `n` である場合、時間 complexityは `O(n)` です。
空間 complexity:
`set()` 操作の空間complexityは、リストのサイズに比例します。
リストのサイズが `n` である場合、空間 complexityは `O(n)` です。