見出し画像

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)` です。

この記事が参加している募集

#AIとやってみた

26,733件

この記事が気に入ったらサポートをしてみませんか?