はじめに また減量することがあればのための備忘録で、自分が行ったことを勧めるわけではなく、ダイエットは自己責任で。 参考にした本とか 何冊か本を読んだが、結局はこの1冊だけで良かったと思う。 忙しい人のための「自重筋トレ」 (光文社新書)作者:比嘉…
ここ数年、腱鞘炎とか帯状疱疹とか腫瘍切ったりとか色々あったけど、2023年はそういう謎の体調不良に襲われることが無かった。 あるとしたら、吐き気がして起きてられないくらいの激しい頭痛に襲われたぐらい。それも、後日、脳神経内科でCTとか丁寧に検査し…
はじめに 最近、Rumaleのリリース記事を書くことをすっかり忘れていた。最近リリースしたv0.28.1では、多様体学習の非線形次元削減手法であるHessian Eigenmaps(a.k.a. Hessian Locally Linear Embedding, HLLE)を実装した。HLLEは、各点の十分に小さい近…
はじめに Clustered Support Vector Machine(CSVM)は、データをクラスタリングし、各クラスターごとに線形SVMを学習することで、非線形な分類器を実現する手法である。また、Rumale::SVMは、Rubyの機械学習ライブラリであるRumaleと同様のインターフェース…
はじめに Random Recursive Support Vector Machine(R2SVM)は、ランダム射影による特徴変換を繰り返すことで、線形SVMで非線形な分類器を実現する手法である。また、Rumale::SVMは、Rubyの機械学習ライブラリであるRumaleと同様のインターフェースで、様々…
はじめに Locally Linear Support Vector Machine(LL-SVM)は、多様体学習の考え方を利用して、線形SVMで非線形分類器を実現する手法である。Rumale::SVMは、Rubyの機械学習ライブラリであるRumaleと同様のインターフェースで、LIBLINEARやLIBSVMで実装され…
はじめに Hugging FaceにあるLINE社の日本語言語モデルの実行例では、四国の県名をたずねるシンプルな受け答えのみなので、凝ったことができるか試してみた。結果、前提知識をもとに回答できることがわかった。 実験 準備 LINE社の日本語言語モデルを、GPTNe…
はじめに LINE社の日本語言語モデルを手元のmacOSで試したくて、llama.cppのRuby bindingsを作ってる経験を活かして簡単なGPT-NeoXモデルのクライアントを作った。 github.com モデルの準備 LINE社の言語モデルをggml形式に変換する。ggmlをcloneしてきて、…
はじめに Numo::NArrayで逆行列計算や固有値分解などの線形代数計算を担うNumo::LinalgのサブセットであるNumo::TinyLinalgを少しずつ作っていた。どのようなサブセットかというと、機械学習で使う(Rumaleで使う)メソッドだけを実装したものになる。 githu…
概要 llama.cppのRuby bindingsであるllama_cpp.rbでもLlama2が使えた。 github.com インストール llama_cpp.rbのインストールは、通常のnative extensionsなgemと同様である。 $ gem install llama_cpp もしmacOSを利用しているなら、metalオプションをつけ…
花粉症なので、洗濯後に外干しはせずに、コインランドリーで乾燥機にかけている。乾燥機が止まるまで暇なのでKindleで本を読んでいる。その中で、「3か月」の使い方で人生は変わる、を読んだ。著者はGoogleに務めた経験があり、Googleでは3ヶ月周期でプロジ…
はじめに 以前に作ったllama.cppのRuby bindingsであるllama_cpp.rbでチャットボットのサンプルを作った。llama.cppのexamples/main/main.cppをいい感じにRubyにすれば作れるので「誰か作ってくれないかな」という他人まかせな気持ちでいたが、作る時間がと…
これは自分への備忘録である。 3年前からヒドい腱鞘炎に悩まされるようになるまで、高い健康運を頼りに生きて来てので、体調が悪いことに気づけない。そもそも腱鞘炎が悪化したのも、手に違和感があることを「そのうち治るだろう」で放置したのが良くなかっ…
はじめに llama.cppはMetaの大規模言語モデル (Large Language Models, LLMs) であるLLaMAを、量子化することでCPU上で動作させるものである。C/C++で実装されているので、Ruby bindingsを作って、Rubyから呼び出せるようにした。 github.com 使い方 インス…
はじめに ChatGPTが人間のように回答するので、パーソナリティ特性はどうなるか興味がわいた。パーソナリティ特性の尺度として広く用いられるものにBig Fiveというものがあり、これを調べてみた。Plusにしてない無課金ユーザーなので、回答が短くなるように…
はじめに Hnswlibは、近似最近棒探索のベンチマークでも上位に位置する、Hierarchical Navigable Small World graphsによるC++の近似最近傍探索ライブラリである。Node.jsのbindingがなかったので、腱鞘炎のリハビリとnpm作成の勉強がてら作成していた。ずっ…
はじめに Rubyでなにか大規模言語モデル (Large Language Models, LLMs) に関することをやってみようと思って、SentencePieceのbinding gemがないことに気づいて作った。 github.com SentencePieceはニューラルネットワークな言語処理向けに作られたTokenize…
はじめに 正規分布や二項分布などの確率分布に従う(疑似)乱数によるNumo::NArrayを生成するNumo::Randomを作った。アイディア自体はずっと前に考えていたが、腱鞘炎と忙しさで、形にできていなかった。 github.com 動機 Numo::NArray自体にも、一様乱数を…
帯状庖疹になった。これを書いてる時点で、発症から2週間ちょっとだが、ブツブツはあるし痒みと寝起きとかに若干の痛みがある。背中と腰にブツブツができた当初は「あせもができたかな?」と思ったが、すぐにロキソニンを飲まないと眠れないほどの痛みが起き…
4月になった。手に痛みを感じて湿布貼ったりし始めたのが去年の4月頃なので、腱鞘炎になってだいたい1年がたった。個人的には、痛みを和らげる塗り薬よりも、サポーターでガチガチに固めるのとストレッチが効果があった。もちろん、休むのが大事で、土日にバ…
はじめに 今後のため記録として残す。タイトルのとおりで、手が全て腱鞘炎という、ひどい腱鞘炎になって半年以上が経ったが、完治する気配がない。今でも寝起きや仕事終わりでは、人差し指や小指は曲げると激痛が走る。原因は手指の使いすぎなので、今の仕事…
はじめに Hnswlibは、C++で書かれたHierarchical Navigable Small World graphsによる近似最近傍探索ライブラリである。近似最近棒探索のベンチマークでも上位に登場する。Ruby bindingがなかったので作成した。 hnswlib | RubyGems.org | your community ge…
はじめに Numo::OpenBLASのBLIS版を作成した。Numo::OpenBLASを作ったのが、だいたい1年前だった。 インストール時にOpenBLASをビルドしてNumo::Linalgのバックグラウンドライブラリに使用するGemを作成した - 洋食の日記 BLISは、最適化BLASの一種で、線形…
はじめに タイトルのとおり。RBSによる型注釈が提供されているメソッドをmonkey patchして、その型注釈をpatch.rbsに書きたい時がある。Rubyのノリで書くと、重複定義エラーになる。 ディレクトリ構成 以降の文章は、次のようなディレクトリ構成で、 |- lib …
はじめに タイトルのとおり。色々あって仕事でのタイプ量が急増したために、4月末頃からヒドい腱鞘炎に悩まされている。手首から先の曲がる箇所は全て曲げると痛い。朝起きてしばらくは、指が痛みで曲げられないほどで、仕事では、サポーターで手首から先を…
はじめに Rubyの機械学習ライブラリであるRumaleで、RidgeとLinearRegressionで、solver: 'auto' とした場合に、Numo::Linalgがロードされていない場合は、L-BFGS法をソルバーとするようにした。Numo::Linalgがロードされている場合は、従来どおり特異値分解…
はじめに Rubyの機械学習ライブラリであるRumaleに、前処理としてカーネル行列を計算するクラス、カーネルリッジ回帰による分類器を追加した。また、Nystroemカーネル近似では、サポートするカーネル関数がRBFカーネルだけであったが、多項式カーネルやシグ…
はじめに Rubyの機械学習ライブラリであるRumaleに、投票(voting)によるアンサンブル法を利用した分類器・回帰分析を追加して、ver. 0.22.4としてリリースした。 https://rubygems.org/gems/rumale/versions/0.22.4 使い方 Rumaleはgemコマンドでインスト…
はじめに Rubyの機械学習ライブラリであるRumaleに、非負最小二乗法(Non-nagtive Least Squares, NNLS)による線形回帰を追加して、ver. 0.22.3としてリリースした。 https://rubygems.org/gems/rumale/versions/0.22.3 使い方 Rumaleはgemコマンドでインス…
はじめに Rubyの機械学習ライブラリであるRumaleに、スタッキング(stacking / stacked generalization)を用いた分類器と回帰分析を追加して、ver. 0.22.2としてリリースした。 rumale | RubyGems.org | your community gem host 使い方 Rumaleはgemコマン…