0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita全国学生対抗戦Advent Calendar 2024

Day 12

ローカルとDockerコンテナーにLLMを実行してみた件

Posted at

はじめに

ハッカソンのきっかけで、ローカルLLMを用いた開発に挑戦することになった。デプロイを考えてDockerコンテナ化もしようとした。

目次

  1. 初めてのローカルLLM
  2. Dockerコンテナ内にLLMを実行

1. 初めてのローカルLLM

コマンドラインからオープンソースLLMを実行できるollamaという非常に便利なフレームワークがある。ここからダウンロードできる。以下はmac上での実行例。
インストールした後、コマンドラインに ollama serve を書くとlocalhost:11434でサーバーが立ち上がったよのログとAPIの色んなHTTPリクエストに関する情報が表示される。以下はHTTPリクエスト一覧の部分。
image.png

localhost:11434に行くと「Ollama is running」が表示されて、ちゃんと実行できていることを確認できる。

image.png

APIの試しとしてlocalhost:11434/api/versionを打つと、GETリクエストが送られて、バージョンが記載してあるリスポンスが帰ってくる。

image.png

これはターミナルにollama --versionを書くことに相当する

image.png

実行できていることを確認したので、LLMをインストールしてみよう。Ollamaのモデル一覧から好きなモデルを探してモデル名をコピーする。そしてターミナルにollama pull モデル名と書いてダウンロードが開始する。ollama listでダウンロード済みのモデルが確認できる。

ダウンロード終わったあと、ollama run モデル名でモデルを実行できる。なおインストールされていないモデルを実行しようとすると勝手にダウンロードしてくれるので、すぐに実行したいならollama run モデル名だけで良い。

今回はGoogleのGemmaの日本語の文章にファインチューニングされたschroneko/gemma-2-2b-jpn-itを利用することにした。モデルの詳細はこちら
ターミナルにollama run schroneko/gemma-2-2b-jpn-itを書くと、Pythonの対話モードのように>>>の記号が表示されて、対話が開始される。システムプロンプトがすでに設定されているが/set system "お好きなプロンプト"で再設定できる。他のコマンドはこちら

image.png
これでローカルLLMを実行できた!
これからは対話ができるし、開発しているアプリからHTTPリクエストでモデルを活用できる。PostmanやHTTPieなどで色んなリクエストを試すとよい。だが、リスポンスのjsonの解釈が複雑になってくるのでLangchainの利用をおすすめする。

2. Dockerコンテナ内にLLMを実行してみた

このLLMをアプリに使う目的だったけど、アプリもコンテナ化するつもりで、LLMもコンテナ化しないといけないことになった。ネットに調べたらモデルのファイルが~/.ollama/modelsに保存されていることが分かった(macの場合)。けど、そのディレクトリにblobsmanifestというディレクトリがあってモデルのデータそこにわかれているしファイル名がハッシュになっていた。コンテナ起動の際に~/.ollamaの中身丸ごとをコンテナのroot/.ollamaにコピーしてもいい気もしたけど他のモデルも入っていたので重すぎた。
ハッカソン中で時間に追われていたので、普通にDocker Desktopでコンテナのターミナルからollamaとモデルをインストールしちゃった。
そうして普通に実行できたけど、動作が非常に遅かった。対話しようとしたら、LLMの回答がリアルタイムに生成されるはずのに、30秒ごとに一トーケンのペースで出力されていたし、回答が全然間違っていた。

image.png

これのせいで実装方法の実用性を考えなおすことになった。ハッカソン中にはさすがにLLMのコンテナ化を諦めたが、今度コンテナのリソースを調整して、再挑戦したいと思っている。

終わりに

Gemmaをファインチューニングしたschronekoさんに感謝

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?