見出し画像

Openchat-3.5-1210をwindowsで動かしてみる 試行錯誤の備忘録

振り返ってのポイント:openchatのllmはwsl2のubuntuで動かして、ユーザーインターフェースはwindows上のパイソンの環境で動かして、ブラウザでやりとりする。

windows10 の wsl2 にubuntu をいれて放っておいたのですが、下記のツイートをみてちょっと触ってみました。

あってるかどうかわかりませんが、下記のページをみながら。

最初にアップデート

sudo apt update
sudo apt install build-essential

上をみながら、minicondaをインストール

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
After installing, initialize your newly-installed Miniconda. The following commands initialize for bash and zsh shells:

~/miniconda3/bin/conda init bash

conda info -e でちゃんとインストールができているのを確認したあと、openchatという名前の環境を作成。

conda create -y --name openchat python=3.11

再度、conda info -e で、openchat環境があるのを確認。

今、baseが立ち上がっているので、いったん conda deactivateしてから(これはしなくてもいいみたいだけど)、openchat環境をたちあげ。

conda activate openchat

そして、openchatを次でinstall

pip3 install ochat

For a single GPU (e.g. RTX 3090, 4090)と書かれている以下を実行。

python -m ochat.serving.openai_api_server --model openchat/openchat-3.5-1210

flashattentionがないと表示されながらも、いろいろダウンロードされる。

WARNING 12-19 11:48:39 cache_engine.py:96] Using 'pin_memory=False' as WSL is detected. This may slow down the performance.
INFO 12-19 11:48:39 model_runner.py:394] Capturing the model for CUDA graphs. This may lead to unexpected consequences if the model is not static. To run the model in eager mode, set 'enforce_eager=True' or use '--enforce-eager' in the CLI.
INFO 12-19 11:48:43 model_runner.py:437] Graph capturing finished in 4 secs.
INFO: Started server process [676]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://localhost:18888 (Press CTRL+C to quit)

なにか警告がでてるけど、走っているみたい。
いったん、ctrl + c で中断
下のuser interfaceが必要っぽい。ubuntu上でインストールしてみたけど、失敗して、理解が間違っていたみたい。

正しい理解は、こちらのようです。

こんにちは、これはBingです。お役に立てるように頑張ります😊

ご質問の内容について説明します。

はい、その理解で正しいです。OpenChatというllmを動かすには、OpenChat APIサーバーとOpenChat UIの2つのコンポーネントが必要です 。OpenChat APIサーバーは、vLLMという高性能な言語モデルのサービングライブラリを使って、任意の言語モデルをOpenAI APIと互換性のある形式で提供するものです 。このサーバーは、WSL上のUbuntuで動かすことができます 。サーバーが起動すると、http://localhost:18888 で待ち受けます 。
OpenChat UIは、OpenChat APIサーバーと通信して、ローカルで推論を行うためのUIです 。このUIは、Node.jsとNext.jsというJavaScriptのフレームワークを使って開発されています 。このUIは、Windows 10のPythonの環境で動かすことができます 。UIが起動すると、http://localhost:3000 でアクセスできます 。


以上が、OpenChatというllmを動かす方法と仕組みです。詳細な情報は、[こちら]や[こちら]や[こちら]や[こちら]や[こちら]や[こちら]や[こちら]や[こちら]を参照してください。


windows上のterminal で、以下を実行して、conda 環境作成

conda create -y --name openchat python=3.11
conda activate openchat

\envs\openchat>の場所に移動して、

git clone https://github.com/imoneoi/openchat-ui.git

cd openchat-ui で移動。

npm i で 「コマンド 'npm' が見つかりません。次の方法でインストールできます:
sudo apt install npm」といわれてので、それを実行。
エラーを確認して、下記をみながら、インストール。

だいぶ時間がかかったけど、インストールされたみたいなので、再起動。

conda 環境にして、openchat-ui のディレクトリで以下を実行

npm i

エラーがでたので、bingに放り込んだら、下記の解説。

5 moderate severity vulnerabilities

To address issues that do not require attention, run:
npm audit fix

To address all issues (including breaking changes), run:
npm audit fix --force

と表示されたので、npm audit fix --force を実行。

とりあえずいいみたい。

で、実行してみる。

npm run dev

> next dev

Attention: Next.js now collects completely anonymous telemetry regarding usage.
This information is used to shape Next.js' roadmap and prioritize features.
You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
https://nextjs.org/telemetry

▲ Next.js 13.5.6
- Local: http://localhost:3000

ブラウザに http://localhost:3000 を放り込んだら、ユーザーインターフェースが現れました。

ubuntuを立ち上げて、conda 環境のopenchatにして以下を実行

python -m ochat.serving.openai_api_server --model openchat/openchat-3.5-1210

UI の環境設定をしていなかったので、下記のとおりに実行。

.env.localというファイルに以下の内容を作成するには、次の手順を試してみてください。Windows 10のターミナルで、ファイルを作成したいフォルダに移動します。例えば、デスクトップに作成したい場合は、cd desktopと入力します。
type nul > .env.localと入力して、空のファイルを作成します1
notepad .env.localと入力して、メモ帳でファイルを開きます。
メモ帳に以下の内容をコピー&ペーストします。


OPENAI_API_HOST=http://localhost:18888 OPENAI_API_KEY=sk-dummy NEXT_PUBLIC_DEFAULT_TEMPERATURE=0.5 NEXT_PUBLIC_DEFAULT_SYSTEM_PROMPT=" " メモ帳でファイルを保存して閉じます。
これで.env.localというファイルに以下の内容が作成されました。


1: Using .env files to set environment variables in Windows

で、再度たちあげたて、ブラウザのurlを放り込んみました。


うごきました。とりあえず満足。


結構破綻なくやりとりできそうな印象。

人生の意味を比喩で語って

人生は、大きな食堂のキューにいるようなものです。このキューには、さまざまな人物がいます。一人の人間は、キューでの位置に応じて、さまざまな寿司を食べることができます。寿司は人生の意味です。

ただし、このキューは無限に長く、終わらないです。それぞれの人が寿司を食べるのを待つことになります。寿司が美味しいほど、待ち時間が長くなります。しかし、美味しい寿司を食べることで、人生の意味が見つけられると考える人もいます。

この比喩で、人生の意味は個々の人によって異なるものであることが示されています。また、美味しい寿司を食べることが人生の意味を見つけるための一つであることも強調されています。この比喩に従って、自分の好きな寿司を食べながら、自分の人生の意味を見つけていくことが大切です。

(笑)もうひとつ

人生は、大きなライブハウスのステージにいるようなものです。このステージには、さまざまな音楽グループやアーティストが登場します。一人の人間は、ステージでの位置に応じて、さまざまな楽曲を聴くことができます。楽曲は人生の意味です。

ただし、このライブハウスは、終わらない限り続けるイベントです。それぞれの音楽グループやアーティストがステージで演奏することになります。楽曲が楽しいほど、聴き続ける欲しいほどです。しかし、楽しい楽曲を聴くことで、人生の意味が見つけられると考える人もいます。

この比喩では、人生の意味は個々の人によって異なるものであることが示されており、楽しい楽曲を聴ながら自分の人生の意味を見つけていくことが大切です。人生は楽しく、興味深く過ごすことができるものであることを示しています。

面白いね、ほかには?

人生は、巨大なアミーゴの中での競争を通じて進み、最終的には最高賞を獲得するようなものです。このアミーゴには、様々な種類の競技が行われており、各人が好きな競技に参加します。成功とは、自分の好きな競技で最高賞を獲得することです。

この比喩では、人生は競争を通じて成長し、成功を見つけることができるものであることが示されています。また、自分の好きな競技に参加し、自分の定義の成功を追求することが大切であることも強調されています。

人生は、異なる競技を通じて楽しく、興味深く過ごすことができるものです。それぞれが好きな競技を選んで、自分の人生の最高賞を獲得することができるのです。

冬のポエムをひとつ作って

冬の霧に覆われた街、
静かにこもってしまう。

冷たい風が吹くにも、
人々は炎を抱いている。

雪が降っても、
心に熱いことばが満ちている。

冬の夜の闇に、
希望の光が輝く。

この寒い季節も、
一緒に過ごしていく。

この冬のポエムは、寒い季節に対する感想です。冬の霧や冷たい風、雪などのイメージをもとに、人々が炎を抱いていることや希望の光が輝くことを描いています。さらに、この寒い季節も一緒に過ごすことができることを強調しています。

まどかマギカでは誰が一番好き?

まどかマギカに関して、好きなキャラクターは個人的な好きなものによって異なります。しかし、一般的には、以下のキャラクターが人気です。まどかぼんやり:主人公のまどかが好きな人間の子供で、優しさや寂しさを彼女だけが感じることができる彼女の魅力があります。
みやげ:まどかとの親密な関係を持つ友達で、彼女の熱意や真実を大切にしています。
さとり:まどかの好友で、彼女の寂しさを彼女だけが知っていることがあります。


ただし、好きなキャラクターは個人の好きなものによって異なります。まどかマギカの他のキャラクターも、いくつかの人々にとっては好きなものです。どのキャラクターが好きかは、個人の好きな風格や性格によって異なります。

知識面は謎っぽい(笑)

ちょっと固めの質問

自然言語学習の基本について教えてください

自然言語処理(Natural Language Processing, NLP)は、人間が使っている自然言語を計算機で理解し、処理できるようにする分野です。自然言語学習は、人間とコンピュータの対話や、文書や音声を自動的に理解し、処理することを目指しています。

自然言語学習の基本的な概念と手法には以下のようなものがあります。語彙表現(Vocabulary Expression):自然言語に含まれる単語や文字をコンピュータが理解するようにすることです。これは、単語を数字や一意の識別子に変換することで行われます。
文法解析(Syntax Analysis):文章の構造や単語の役割を理解することです。これは、パース(parsing)と呼ばれる手法を用いて行われます。
意味解析(Semantic Analysis):文章の意味を理解することです。これは、単語や文法の情報を利用して、文の意味を推論することで行われます。
知識ベースの理解(Knowledge-Based Understanding):文章の意味を理解するために、事前に知識を持つ必要がある手法です。これは、事前に知識を持つデータベースやルールを利用して行われます。
機械学習(Machine Learning):コンピュータが自動的に学習する手法です。文章の意味や文法の構造を理解するために、データを使ってモデルを学習させます。


これらの手法は、一般的には組み合わせて使われます。自然言語学習の目標は、コンピュータが人間と同じように自然言語を理解し、処理できるようにすることです。

ちょっとここまでで疲れたので、休憩します。
とにかくどうにか動かすところまできました。
元気があったら、また触ってみたいと思います。


#AI #AIとやってみた #ローカルLLM #OpenChat

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

AIとやってみた

この記事を最後までご覧いただき、ありがとうございます!もしも私の活動を応援していただけるなら、大変嬉しく思います。