Gradio ホントよくできてる


Gradio ホントよくできてる
(AIモデル+設定 を試せるデモアプリをサクッと作れるやつ)

「デモアプリが作れるやつ」「UIはいかにもGradioだよね」って認識の人が多いけど、使い方次第ではプロダクトにも導入できるし、個人的にそれが現時点では最高の方法の一つに見える。ホント良い

https://gradio.app

Gradio.app
Build & Share Delightful Machine Learning Apps

まず、プログラミング得意じゃない人でも数行のコード書けばあとは無限にブラウザ上でぽちぽちテストできるの強い
モデルを切り替えてモデル + ファインチューニング + 固定プロンプトを試したり、色々できる
これまで実装したいくつかのAI系プロダクトでは、コストかけてモデルの精度あげるより、ファインチューニングや固定プロンプトでアウトプットのコントロールする方がコスパ良いシーンがあった

また、多くのプロダクトでは予算の都合で自前モデルは作れなかったり、自前モデルなしでフィジビリティチェックすることになる

アウトプットの品質についても、ビジネス上のポイントとなる品質理解をしている人のほとんどは非dev系人材なので、 gradio で色々試せる環境作った上でその人に「これで最適なパラメータの組み合わせ出してください」ってやってもらうと、非常に良いものが出てくる
出力がファジーな生成AIだからこそ非dev系人材は重要に思えるし、エンジニアが無理にそこを頑張る必要ないなと思った。少なくとも自分はそこを頑張りたくない

Gradioは「あくまでデモ用でしょ」って認識されること多いけど、APIモードにすれば気に入った挙動をそのまま他のアプリやバッチから呼び出すことができるから、プロダクトのバックエンドとして使うのも個人的には十分実用的に見える
実際、一つのプロダクトで8ヶ月ほど運用しているけど、Gradio固有の問題にはぶつかっていない
Apache2.0ライセンスで使い勝手良いし、負荷も余程の大規模サービスでもなきゃ無視できるレベル

Gradioで環境作って、biz系人材にその環境で試行錯誤千錯万綜していただいて、出来上がった良いリクエストをそのままAPIモードのGradioに投げるアプリを作れば、多くのケースで現時点での平均点以上の「生成AI系プロジェクト」になるんじゃないかな

という肌感

Gradio、マジで良い


アルジェリア旅行について


アルジェリアに行きました

珍しい機会なので、役立ちそうな情報を残します

  1. スマホ+SIM
  2. お金
  3. 移動(タクシー)
  4. 移動(電車)

とはいえVISA取得のハードルが非常に高くそれこそが最大の障壁なので、そこに関するアドバイスが何も出来ない私の戯言は、黄身のない目玉焼きのような感じです。。。

続きを読む アルジェリア旅行について

AI生成文章の「不気味の谷」と、対応策4つ


生成AIでの画像作成・文書作成をしていて思った。文章にも不気味の谷があって、結構想定外に生成AI組み込んだシステムの使用感を下げてしまう

なので、その概要と小手先での対応を書いた

不気味の谷とは

※「不気味の谷」とは、人間ぽいけど人間じゃないものに対して感じる気持ち悪さを表す言葉。雑に書いた似顔絵よりも、精密だけど微妙にオカシイ絵の方がキモさ怖さ感じたりするやつ

対策した

で、この不気味の谷をクリアする方法として小手先での対応方法をいくつかやってみたので、割とアリかも?というのをまとめた

1. 箇条書きや構造化テキストにする
これが鉄板かも。人間らしさを排除すれば気持ち悪さを抑えられる

2. AIにキャラ付けする: 語尾と喋り方を個性的にする
文体を漫画やアニメのキャラみたいにすると、おかしくてもまぁ許せる

3. AIにキャラ付けする: 視覚で伝える
なんかキャラの画像に喋らせる感じで常に視覚で伝え続けると、気持ち悪さが緩和される

4. 人間が校正する
良くなる
けど、生成AI使うメリット (低コスト・オンデマンド・ノーメンテ・迅速) が消える

小手先なんだけどね

4 以外は「人が作った物にどれだけ近いか」のスコアを下げる対応だし、4は生成AIの良さを殺すし、サンプル数は 3 の主観100%でお届けという、小手先対応なのだけど、現実問題困ってたらすがる藁くらいにはなるかも

本格対応は、めちゃ頭いい人やお金が無限にある企業様がやってくださる!でしょう!


【解決】 WireGuard + Nginx での通信エラー


結論

現象
WireGuard server で インターネットアクセスを受け、WireGuard clientに nginxリバースプロキシする構成で、POST通信だけが失敗しました

解決策
WireGuard のMTUを下げることで解決しました

適切なMTUはネットワーク環境毎に異なります。タイミングによって経路が変わりMTUも変わりうるというのが個人的なドハマりポイントでした

送信するネットワーク環境毎の適切なMTUを調べるには以下コマンドが有用です

ping -M do -s "MTUとして試したい数値" -c 3 "送信先サーバ"

イーサネットのMTUサイズを超えていたら “Message too long” が出ます
環境によっては serverのMTUを下げた方が良いケースもあるはずです

ただ、経路によってMTUは変わるため、何度か時間を変えて試す必要がありました
良い方法ある方教えて下さいませ

(原因は WireGuardのMTUであり、nginx, POST などは直接関係なかったのですが、ngrok的なことやりたい人は同じ現象でハマるケースあると思うので、googlability を考えて記載しています)

詳細

以下は備忘メモ
困ってググった人を拾うキーワードとなることを期待してるので、結論で満足した人は読まなくて良いです

続きを読む 【解決】 WireGuard + Nginx での通信エラー

生成AIが毒ガス扱いされる日


こんにちは
地下核シェルターと短波ラジオしか信頼しないタイプの陰謀論者、トジと申します

こちらの記事
https://gigazine.net/news/20230330-pause-ai-training/
「コントロールの喪失」の恐れがあるとしてGPT-4を超えるAIの即時開発停止を全技術者に対して6カ月間求める公開書簡、イーロン・マスクやスティーブ・ウォズニアックなど1300人以上が署名

この記事を読みまして、生成AIが「毒ガスと同じ扱い」になる日が近いなと直感しました。

アメリカ合衆国によって。

続きを読む 生成AIが毒ガス扱いされる日

AIO ( AI最適化 もしくは 人工知能最適化 )


AIO※ (=人工知能最適化) は、AIが人の疑問に答える時代には自然と発生して、発展していきます
※ AIO は “Artificial Intelligence Optimization”。 SEOのAI版という感じ 

これは人々の為になるものでしょうか、それとも人類の共有財産であるAIを汚す邪悪なものなのでしょうか

コーパス汚すなよ

今 AIO を素朴な頭で考えると、「wikipedia (英) をハックする!」という、安直で愚かで後ろ向きで人類の敵で誅殺すべきような行為に辿り着きがちですね

「WordNetコーパスをハックする!」とか「有名情報ソースリポジトリを汚染する!!」とか「自分のライブラリを皆に使ってほしいので、それを使ったコードを3,000万のプロジェクトでコミットする!!」でも良いのですが……

いや良くないです。それらは明確に邪悪です!!

このように、AIOを考えると、邪悪な方法から先に立ってしまいます。

自分に謎の邪悪バイアスがかかっているだけかも知れないのですが、AIO = コーパス汚染 というのが真っ先に浮かんでしまうのです

止められない

「AIOなんて邪悪だ、やるべきではない」

分かります。ボクも分かりますの立場です。ただ、いろいろな所で最近この話をしてるんですが、事業持っている人は大体AIOを重要だと捉えていました

AI研究者やエンジニアが束になって反対しても、お金の洪水の前には無力です
あらゆる方法でコーパスを汚染する戦いが始まるかも知れません

古き良きハッカーとして出来ることは?

せめて、出来ることはなんでしょうねーー

まぁ、ホワイトハットSEO ならぬ、 ホワイトハットAIOをなるべく迅速かつ激烈に推し進めるしか無いのかなと思います

合理的かつ倫理的な方法があれば、邪悪な方法を採る企業は減るでしょう。少なくとも大手に限れば

AI事業者はある意味恣意的な注入に対して、ホワイトハットなものであれば受け入れるしかないと思います。その扉を閉じるとあらゆる邪悪な方法が試されるでしょう

今の生成AIは、正直ChatGPTの出現によって過大に見積もられている気がします

とは言え、その長期的な価値は間違いないもので、とくに時代時代のコーパスは無二の価値があります

これを邪悪なAIO業者の手でスパムまみれにするのは、人類全体の不幸ですらあります(大げさ)

コレまでもあらゆるメディアが汚染されてきたので

他のメディアに及んでいた黒い手がAIコーパスにも同様に伸びるだけ。とも言えますね

いずれにせよ、
「ホワイトなAIOを常識にする」っつーのに、ちょっと本気で出来ること考えないといかんよと思っています!!!


Rubyがプログラマのための言語で気持ちよく書けるってのは今は当たり前過ぎて忘れてたけど、たしかにそうだったわ


なんでRuby書いてるの?と言われて

自分の考えをまとめる意味でもちょろっとまとめました

前提として

「プログラマを信頼する」のは全てのケースで正義ではありません

プログラマの紡ぐソフトウェアは多くの場合は会社のもので、資本家のものとも言えます
プログラマを信頼せず、統制下において管理するのが適切な場面の方が多いですし、ソフトウェアライフサイクルの進歩はその歴史にも見えます

Rubyはそんな中で 当時は 抜群にプログラマを信頼していた言語に見えました

最初に触った時の感じとしては

直感的な書き方ができる
冗長な手続きを抑えて一直線にモリモリ実装できる
劇薬とも言えるコア拡張・メタプログラミングを誘ってさえいる

プログラマとしては嬉しくて、 真面目なSIer系エンジニアからはオモチャと揶揄されていたとしても、オタク感満載でプログラミングを楽しめるものだったと思います

感覚的な部分は↑って感じです!

あと、Railsも好きです

RubyとRailsは別物であって、Rails = Ruby と見ることも、Ruby = Rails と見ることも失礼なのだけど、それでもやっぱり RailsがあるからRubyが好きというのも、まぁ成立するよねと思っています。両方好き。

でもやっぱ良くわからんな

ただ、今はこの直感的な書き方や一直線でモリモリ実装できる感じは、今では結構当たり前なこととして色んな言語に波及しているように見えます

便利なフレームワークも他言語で揃っていますしね

お仕事だとPythonも結構割合多いし、たまにPHP触ることもあるし、コード量だけで行ったらJavaScriptが一番多いかも知れないです

そうなると、なんでRuby好きなの?なんですが、うーんそうなるとやはり宗教なのかなー


着るVR !? Woojer Edge が届いた


音を感じるウェアリングスピーカー「Woojer Edge」
クラウドファウンディングで入金して半年、やっと手元に届きました

結論

✕ じっくり音楽聞く / ゲームのお供に => 微妙・むしろウザい

△ ゲーム => ゲームのBGMと効果音によりけり

◯ 音楽+ワークアウト / 音楽+ダンス / 音楽+家事 => 楽しい・テンション上がる

着るデュアルショック®」とでも言う感じで、そこまで音楽と振動とはシンクロしていません

雑に音楽で盛り上がるデバイスって感じでしょうか

例えば↑の紹介動画だと皆さんノリノリですが、これは体感して分かるけど全然大げさではなく、ノリのいい人は本当にテンション上がります

ただ、日本人の多くは愛想笑いを浮かべてしまいそう

カラオケでタンバリン叩きまくる陽キャ」にも似てて、ノレれば楽しいし、ノレなきゃ邪魔

音楽を体感できるってのは、聴覚障害者には多分超最高なので別記事でまとめたいです

以下、気になった人向けの詳細

続きを読む 着るVR !? Woojer Edge が届いた

チャイムで時間管理 ( RaspberryPi )


会社に行かなくなって生活のリズムが壊れた!
ランチを食べる時間を忘れてしまう!!

そんなあなたにおすすめなのが「学校風チャイム」

「キーンコーンカーンコーン♪」ちゃんと朝起きていた小学生時代のように生活リズムを整えましょう

簡単: ★★★★☆
便利: ★★★☆☆
材料: 
  RaspberryPi (Raspbianが入ってれば、多分どのモデルでも)
  スピーカー (高出力のほうが良い)

材料調達

RaspberryPi

皆様のお家に眠っているものでOKです!

音源

「キーンコーンカーンコーン」と鳴らしたかったので、こちらから調達しましょう
https://otologic.jp/free/se/school_bell01.html
OtoLogic様 – CCライセンスなので、職場で使いたい方は購入してください
500円とお安いです!

スピーカー

家に転がってる有線スピーカーを繋ぎましょう
なければ
Amazonだと1,500円くらい
ドンキとかで2,000円くらい
Aliexpressで1,000円くらい (USB Powered Speaker とかで検索)

開発時はイヤホン・ヘッドホンでもOKです

MP3を鳴らせるように

mpg123 というソフトウェアでRaspberryPiに保存したMP3ファイルを再生できます

$ sudo apt install mpg123

でインストール

チャイムを鳴らすプログラム

以下のようなスクリプトを作成します

#!/bin/bash
/usr/bin/mpg123 "ダウンロードしたMP3のパス"

試してみましょう

$ bash "作ったスクリプト"

「キーンコーンカーンコーン♪」
チャイムが鳴りました!

決まった時間に鳴らす

crontabを使ってスケジューリングしましょう

ホワイトな働き方の例

00 9,12,13,17 * * mon-fri /bin/bash "作ったスクリプトファイル"

09:00〜17:00が定時
12:00〜13:00が昼休み
土日休み

ブラックな働き方の例

30 7 * * * /bin/bash "作ったスクリプトファイル"
00 12 * * * /bin/bash "作ったスクリプトファイル"
15 12 * * * /bin/bash "作ったスクリプトファイル"
00 23 * * * /bin/bash "作ったスクリプトファイル"

07:30〜23:00が定時
12:00〜12:15が昼休み
週休0日

完成!

簡単にできて、生活が整いますね!

応用

朝起きる時間だけは「ジリリリリ!!」とうるさいベルにしたり
好きな音源をMP3化して使ったり