RaspberryPi5で挑む!DockerとOllamaを活用したローカルLLM環境の構築と実験

以前の投稿では、少し古いゲーミングPCにUbuntuをインストールし、Dockerコンテナを使ってOllamaを起動し、ローカルLLM環境を構築しました。

PC上でローカルLLMを動作させていましたが、最近ではモデルサイズが小さく、よりコンパクトなLLMが登場しています。このようなモデルであれば、RaspberryPiのようなエッジデバイスでも動作可能です。少し前には、RaspberryPi5TinyLlamaというコンパクトなLLMを動作させる記事が話題になっていました。

参考

qiita.com

zenn.dev

kotamorishita.com

恥ずかしながら今回の内容はその何番煎じというものです🫠🫠🫠 作業内容は参考サイトでもかなり記載があるので、こちらではある程度にとどめ、私は使用感など見ていきたいと思います。

  • 今回の動作環境
  • RaspberryPiにDockerをインストール
  • OllamaのDockerコンテナを作成する
  • RaspberryPiでローカルLLMを動作させる
  • 今回使用したLLMとその起動コマンド
    • 起動コマンド一覧
    • tinyllama:1.1bの使用
    • gemma2:2bの使用
    • phi3:3.8bの使用
  • モデルサイズの限界への挑戦
    • llama3.1:8bの使用
  • おわりに
続きを読む

Windows上でファイルのハッシュ値を求める方法3選

Windowsを使用しているとファイルのダウンロードの確認でハッシュ値を確認したいこともあります。

例えば、UbuntuのISOファイルなどはファイルサイズも大きいのでダウンロードの成功を見るためにも確認しておきたいところです。ダウンロードサイトにはSHA256SUMSというファイルがあり、ここにファイルのハッシュ値が格納されているので、この値と比較します。

SHA256SUMSのファイルの内容

a028574e7d2e2234828fbecc77b967c643ae23b24e5b5a69ad03d61a11e5caaa  ubuntu-ja-22.04-desktop-amd64.iso
2b7b23298a94abac97ca41397a5079acd82d8347c0e0b54ba3a162175d4fc063  ubuntu-ja-22.04-desktop-amd64.iso.torrent

Linuxであればmd5sumsha1sumなどのコマンドを使用すればハッシュ値の確認ができるのですが、Windowsではどうすればいいのかなと思い、その手法を改めて調べてみました。

Windows10以降ではWSL(Windows Subsystem for Linux)の使用も可能ですし、最近ではWSLの環境が拡充されていて、シームレスにWindowsからコマンドを呼び出すことも可能です。

目次

Windows側のツールを使用する

Windows側でもハッシュ値を求めるプログラムがあり、Powershell側のコマンドレットも存在します。

certutil.exeハッシュ値を求める

このプログラムはWindowsに含まれています。Windows Terminalなどを開いて以下のように実行します。実行はcmd上でも、Powershell上でも可能です。

> certutil -hashfile 【ハッシュ値を求めるファイル名】 【ハッシュ値算出のアルゴリズム】

使用例

PS> certutil.exe -hashfile .\ubuntu-ja-22.04-desktop-amd64.iso SHA256
SHA256 ハッシュ (対象 .\ubuntu-ja-22.04-desktop-amd64.iso):
a028574e7d2e2234828fbecc77b967c643ae23b24e5b5a69ad03d61a11e5caaa
CertUtil: -hashfile コマンドは正常に完了しました。

SHA256SUMのファイルの中の値と一致しています。

certutil.exeのマニュアルは以下にあります。

learn.microsoft.com

Get-FileHashハッシュ値を求める

このコマンドレットはWindowsPowershellに含まれています。そのため、Powershell上でのみ可能です。

PS> Get-FileHash 【ハッシュ値を求めるファイル名】 -Algorithm 【ハッシュ値算出のアルゴリズム】

使用例

PS> Get-FileHash .\ubuntu-ja-22.04-desktop-amd64.iso -Algorithm sha256

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          A028574E7D2E2234828FBECC77B967C643AE23B24E5B5A69AD03D61A11E5CAAA       C:\ubuntu-ja-22.04-desktop-am...

少し難があるのは出力が大文字の点でしょうか。以下のように実行すると出力結果を小文字にできます。

出力を小文字にする例

PS> Get-FileHash .\ubuntu-ja-22.04-desktop-amd64.iso -Algorithm sha256 | ForEach-Object { $_.Hash.ToLower() }

Get-FileHashのマニュアルは以下にあります。

learn.microsoft.com

WSLを使用する

WSLを使用するとシームレスに実行ができるようになります。ただしWSLUbuntuなどのディストリビューションをインストールしている場合に限ります。

現在のWSLではファイルシステムも実行環境もWindows側(cmdPowershell)から呼び出す事ができるようになっています。そのため、Ubuntu 上にあるmd5sumコマンドやsha256sumコマンドを呼び出すことも可能です。

# WSLのコマンド呼び出し
> wsl 【WSLのディストリビューションでのコマンド】
#  wslのLinuxディストリビューション上にあるsha256sumコマンドの実行
> wsl sha256sum 【WSLから参照されるファイルのパス】

実行すると以下の様になります。

使用例

PS> wsl sha256sum /mnt/c/ubuntu-ja-22.04-desktop-amd64.iso
a028574e7d2e2234828fbecc77b967c643ae23b24e5b5a69ad03d61a11e5caaa  /mnt/c/ubuntu-ja-22.04-desktop-amd64.iso

こちらの注意点はファイルのパス指定がWSL側から参照できるパスになる点です。例えばCドライブの直下においたファイルのパスは/mnt/c/になります。また、パス補完機能なども働かないのでちょっと大変かもしれません。

Windowsのパス WSL上のLinuxで認識されるパス
C:\ /mnt/c/

動作速度はかなり遅くなる(ファイルのアクセスが原因かもしれません)ようですが問題なく実行できています。

おわりに

Windows上でファイルのハッシュ値を求める方法3選ということで、今回はcertutil.exeGet-FileHash、そしてWSLを活用する方法の3つを紹介しました。

certutil.exeWindowsに標準で搭載されているため、追加のインストールが不要で、すぐに使用できる点が○。Get-FileHashPowerShellを高度なスクリプトの処理として活用しやすいでしょう。また、WSLを活用した方法では、Linuxコマンドに慣れていれば戸惑いなく使用することができると思います。

個人的には注意点が少ないcertutil.exeの使用が一番楽かもという印象です。とはいえ、LinuxのコマンドそのままにWSL経由での実行も悪くないかもしれません。

ローカル環境でAIを活用する新時代:OllamaとPythonの強力タッグ

以前のエントリでは、Ollamaを使ってローカル環境でLLMを構築する手順を説明しました。それだけでも十分に活用できるのですが、さらに一歩進めて、Ollamaをより深く活用する方法について考えてみました。Ollamaをセットアップすると、REST APIを介してシステムからアクセスできるようになります。このREST API経由でシステムと連携することで、より柔軟にOllamaの活用の可能性が広がります。今回は、REST APIを通じてOllamaの機能を使う手法についてしらべてみたいと思います。

今回はLLMのモデルとしてMeta社Lllama3.1:8Bを使用しています。これ以上のサイズだとメモリが足りないというエラーが発生しました😢AIを使うのであればメモリ32GBあたりはもう必須な領域のようです。

また、使用環境についてはUbuntu22.04 LTS上のDockerコンテナOllamaを使用しています。

環境構築の参考

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com


Ollamaのドキュメント関連参考

ollama.com

以下がOllamaGitHubで詳細はこちらに書いてあります。

GitHub github.com

APIの詳細 github.com

続きを読む

Notionをオンラインデータベース化!Node-REDからのデータ格納法

みなさんNotionを使っていますか?私自身、ブログ、MarkdownGoogle系のドキュメントなど、過去に色々な手段を試してみましたが、最近では共有することを意識して、Notionを使うことが多くなりました。Notionは情報管理ツールであり、ノート、タスク、データベースなどをプラットフォーム上で管理でき、直感的なインターフェースで簡単に操作できます。実際のところはデータベースに様々なビューがあるツールと思っても良さそうです。

www.notion.so

今回は、このNotionをオンラインデータベースとして、Node-REDからの使用してみたいと思います。  

Notionのデータベース化

エンジニアにとって、情報の収集や整理をデータベースを使用・格納することは大きな意味があります。私は主にNotionをつかって気になったWebのリンクをまとめるようにしています。以前はPocket を使用していたのですが、すっかりNotionに乗り換えています。今回の例もNotionでデータベースを作成し、Node-REDから操作していきます。

続きを読む

ローカルLLMをWebUIで手軽に操作!噂のllama3、phi3、Graniteも使える!

最近では、生成系AIも徐々に多様化してきて、ローカルLLMの使用も流行ってきていますね。個人利用であれば、OpenAIChatGPTなどのSaaS型の生成AIでも問題ないのですが、企業活動になるとそう言ってもいられない事象があるのはもっともかもしれません。

今回は、先日まで設定を行っていた作成した中古ゲーミングPCのUbuntu24.04 LTS上にDockerCUDA Toolkit設定済)を使用していますが、Dockerが使用できるようであればCPUのみでも実行可能です(処理スピードの点は注意)。また、WindowsDockerWSLでもほぼ同様に使用できると思います。

参考

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

ただ、環境構築やCLI上からプロンプトを打ち込むのは結構面倒なので、今回はローカルLLMをWebUIから操作することのできるopen-webuiという環境も使用して一般的なチャットインターフェースを持った生成系AIの形で利用できるようにしてみたいと思います。

ローカルLLMとは?

ローカルLLMクラウドではなく、ローカル環境(オンプレミス)で動作する大規模言語モデルのことを指すようです。

今回はこのローカルLLMを使用する仕組みとしてOllamaを使用してみたいと思います。

ollama.com

Ollamaとは…

Ollamaは、オープンソースの大規模言語モデル(LLM)をローカルで簡単に実行できるツールです。LLama3やLLava、vicuna、Phiなどのオープンに公開されているモデルを手元のPCやサーバーで動かすことができます。

このような形でLLM部分のみを変更することで、1システムで切り替えて使用できるというのがOllamaのメリットだと思います。更に今回はDockerのコンテナを使用することで更に手軽に使用できるようにしてみたいと思います。

続きを読む
/* -----codeの行番号----- */