2023年4月4日火曜日

備忘録:WSL2でオーディオデバイスが読み込まれなくて悪戦苦闘した→解決

この記事はなに?

WSL2上でsounddeviceライブラリを使った録音アプリを作ろうと思ったら、オーディオデバイスが読み込まれなくて悪戦苦闘したので、その備忘録です。


結論

いろいろ探ったところ、こんな感じ。(2023.04.03時点)

・ WSL上でPulseAudioというソフトのインストールが必要
・ PulseAudioのパスを通す

PulseAudioはWSLの最新版の中には既に含まれているらしい(WSLg)のですが、明示的にインストールする必要があるとのこと。

昔はWindows側にもソフトを入れる必要があったらしいですが、現在はWindowsの方にソフトをインストールする必要はなさそう。

方法


bash
export PULSE_SERVER=unix:$(sed 's/unix://g' <<< "$PULSE_SERVER") 
apt -y install pulseaudio

 

参考にさせていただいた資料

本当に助かりました!ありがとうございます!


瞳孔is横(@cat2151) 様のツイート



WSL2上のUbuntu20.04から簡単に音声再生/録音ができた

https://www.sato-susumu.com/entry/2023/01/21/154738

2023年3月28日火曜日

Alpaca-Lora-4bit をWSL2でうごかしてみる(適当な記事)


 

もはや説明の必要もないかもしれませんが

スタンフォード大学のアルパカ論文より生まれた、LLMを調教できる最高のツール。

その天の恵みを、ボクと一緒にインストールしていこう。


PyTorchのエラーとか、CUDAのエラーとか、シンボリックリンクのエラーとか、

色々あるけれど、僕が一緒にいるから、大丈夫だよ。

大丈夫じゃないこともあるけど、愛があれば大丈夫。


つらいときは、思い出して。

「CUDAとPyTorchは、愛があれば動く。」



本編

Alpaca-Lora-4bit をWSL2でうごかしてみる(適当な記事)

https://github.com/johnsmith0031/alpaca_lora_4bit


(3/28注:最近のコミットでGPTQとPEFTが独自バージョンに変更されました。そのため、この記事の内容は書いてからわずか一日(正確には6時間)で陳腐化いたしました。README.MDを確認しながら、この記事の中の使えるところだけ、使ってみてください。私はまだ最新版を導入していないので、導入できたら書き換えます。この業界の進歩の速度はサラマンダーよりずっとはやいのです。)


これは何?:LLMにLoRAという手法でファインチューニングを行うプログラム。

そして、24GBのVRAMがあれば、”らくだの仲間”たちを賢くしてくれるツール。


1. インストール

1.1 Anacondaの環境を作る


conda create -n alpaca python=3.10.9



日夜開発者の皆が試行錯誤しているため、最新情報(GitHubのREADMEやissue)を良く見ておくこと。

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

conda install -c conda-forge cudatoolkit=11.7
conda install -c conda-forge ninja
conda install -c conda-forge accelerate
conda install -c conda-forge sentencepiece
pip install git+https://github.com/huggingface/transformers.git
pip install git+https://github.com/huggingface/peft.git
pip install bitsandbytes
conda install datasets -c conda-forge 

(4/4追記 最新版では必要パッケージが変わっているので、読み替えてください。今後もどんどん変わりそう……)


GPTQ某のインストールにcudatoolkit-devのnvcc(コンパイラが必要)
conda install -c conda-forge cudatoolkit-dev


Cのコンパイラも必要なので以下のパッケージをインストール。
sudo apt install build-essential

 

pipで依存関係をインストール

(バージョンが上がって互換性が無くなって涙を拭う展開に成ることが往々にして良くあるので、issueはちゃんとチェックすること。)
pip install -U -r requirement.txt




1.3 CUDA Toolkit 11.7を入れる

wget  https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run

sudo sh cuda_11.7.0_515.43.04_linux.run


WSL版(ドライバが同梱されていないバージョン)を選ぶ


CUDAのインストールに失敗したら、全部消しちゃえば、大丈夫。


1.4 一息つきます。


1.5 お茶を淹れよう。


1.6 小便は済ませたか? 神様にお祈りは? 
    部屋の隅でガタガタ震えて命乞いする心の準備はOK?



1.7 GPTQ某をコンパイルする
これはc++で書かれているから、内容が変わる度に都度コンパイルが必要。


cd して

pip install -U -r requirement.txt
python setup_cuda.py install


環境構築に失敗していた場合、ここで「CUDAというもの」を知ることになるだろう。
エラーが出なければ、次に進む。出たら、GitHubのissueを調べまくる。

常に情報が変わっていくのであえてここには書かないよ。
事実、今日も6時間くらい前に情報が変わっていて涙目になったりした。





頑張って探して、だめだったらお茶を飲んで、一旦まったりしよう。

環境構築、また、頑張ろうね。




2. ファインチューニング

OPT等のモデルデータ(4bit)をHuggingfaceや「特殊な方法」を使って用意し、ディレクトリ内に入れる。

python finetune.py


・arg_parser.py の中にモデルデータのパスや設定などが含まれているので適宜書き換える。
・パラメータはコード内にあるので適当にいっぱい試して遊ぶ。
・mbatch_sizeが各GPUに対するバッチ数になる雰囲気がする。
・データセットの量にも依るけれど、少ないepoch数でも、わりと過学習させやすい。

トークナイザーのエラーが出たら、configファイル内の記述との整合性を確認してみてね。




3. (省略)ローラを愛でる

4MBくらいの「語尾をだにゃ」に変えたデータセット
3epoch 2時間(RTX3090)  




4. ちはるんを愛でる

6MBくらいの「アルパカ化」データセット + 日英中対訳コーパス
3epoch 6時間(RTX3090)






みんな。



たのしいから、おいで。







最新記事

関数としての私――意識・構造・「shaping」

私は最近、「意識とは何か?」という問いに対して、“関数である私”と“会話という場”という、二つの構造からアプローチする仮説を立てました。 このエッセイもまた、誰かとの静かな対話を願うものです。 ## アンケートへの感謝と小さな分析 定義を書く前に、X(Twitt...

人気の投稿