タグ

ブックマーク / nowokay.hatenablog.com (274)

  • OpenAIのFunction Callingを使って自然言語でツールの操作をする - きしだのHatena

    先週、OpenAIから、APIでの返答に関数呼び出しのパラメータを返してくれるFunction Callingが発表されました。 試してみると結構たのしかったのでまとめてみます。 解説動画はこちら youtu.be とりあえず、こんな感じ。 OpenAIのFunction Callingでツール操作を試すやつ、GPT-4だとかなり文脈を理解してくれるし、位置関係も結構ただしく扱ってくれる。しかし遅い。 pic.twitter.com/nkijZpcnP6— きしだൠ(K1S) (@kis) 2023年6月19日 用意したのは3つの関数。 set_position(id, left, top) set_size(id, width, height) set_color(id, color) で、その割に、「中央に」だとか「隣に」だとか、コンテキストを踏まえて座標などを計算して関数を呼び出して

    OpenAIのFunction Callingを使って自然言語でツールの操作をする - きしだのHatena
  • ChatGPTは虚構新聞を知らない - きしだのHatena

    ChatGPTは何でも知ってますよね。で、虚構新聞なんて話題になってることも多いし、当然しってるだろうと思ったら、知りませんでした。 これ、国際信州学院大学を知らなかったので、虚構新聞も知らないんじゃないかと思ったんですよね。 こういったフェイク系ジョークサイトは、言語モデルの学習にかなり邪魔になると思うので、名指しで外されているんではないかという気がします。 ところで、国際信州学院大学しらなそうなので、ホームページあるよみたいなことを言うと、「知ってるんなら自分で調べろや、ボケ」みたいなことを非常に冷静に丁寧に言われました。 ChatGPTは静かにキレますね。 虚構新聞 全国版 作者:虚構新聞社ジーウォークAmazon

    ChatGPTは虚構新聞を知らない - きしだのHatena
  • CTranslate2でRinnaモデルをコンバートしてCPUや8GB GPUで動くようにする - きしだのHatena

    CTranslate2はTransformerモデルをCPUGPUで効率的に動かすライブラリです。 https://github.com/OpenNMT/CTranslate2 CTranslate2の機能のひとつにモデルの量子化があります。INT8で量子化すると雑に必要メモリが半分に。そしてCPUでも動かしやすくなるので、GPUなくてもLLMが試しやすくなります。 まあ、INT8を使うだけだと、モデルの読み込み時のfrom_pretrainedにload_in_8bit=Trueをつければいいのだけど、これがbitsandbytesというライブラリを使ってて、そしてbitsandbytesがWindowsに対応していない。*1 一応、有志がビルドしたDLLを使えば動くのだけど、めんどい。 https://qiita.com/selllous/items/fbaa2c3d2d504e43

    CTranslate2でRinnaモデルをコンバートしてCPUや8GB GPUで動くようにする - きしだのHatena
  • Javaがパブリックスタティックヴォイドメインの呪文から解放される - きしだのHatena

    みなさん、今日もパブリックスタティックヴォイドメインしてますか? ジャバと言えばパブリックスタティックヴォイドメインですよね。 最近はIDEでmain[tab]と入力すれば補完してくれるとはいえ、コードを読むときには目に入ってきたりしますね。 そんなパブリックスタティックヴォイドメインの呪文から解放される日が近づいています。 TL; DR 9月リリースのJava 21の試用機能として void main() { System.out.println("Hello"); } をhello.javaで保存したら、java hello.javaで実行できるようになります。 (Java 21では--enable-preview --source 21が必要) Javaではプログラムを開始するときにpublicなclassなどにStringの配列を受け取るpublicでs

    Javaがパブリックスタティックヴォイドメインの呪文から解放される - きしだのHatena
  • 空の配列に対するmaxは何を返すか - きしだのHatena

    ちょっと前に「配列中のすべての要素が条件を満たすかどうか判別する関数で、空の配列はTrueを返すべきかFalseを返すべきか」のような話が話題になってました。 まあこれは「Trueを返す」が答えなわけですが、では「配列中の最大値を返す関数で空の配列の場合は何を返すか」が気になりました。 「配列中のすべての要素が条件を満たすかどうか判別する関数」について言えば、簡単に言えばこんな感じ。 まず、配列のすべての要素が偶数であるかどうか判別する関数を考えます。 void main() { int[] data = { 23, 44, 12, 98, 5 }; System.out.println(allEven(data)); } boolean allEven(int[] data) { for (int n : data) { if (n % 2 != 0) return false; } r

    空の配列に対するmaxは何を返すか - きしだのHatena
  • ChatGPTの登場でWeb3への興味が急速にしぼんでいる - きしだのHatena

    MidjourneyやStable Diffusionのような画像生成AIが出たりChatGPTが出たりで、Web3で騒いでいたところがAIに移行した感じあります。 Google Trendsだと、生成AIは完全にWeb3を抜いています。 メタバースも抜いたところ。 ChatGPTは圧倒的です 実際にニュースどうなってるか見てみると、Web3に関するニュースは4月以降は出ていないです。 5月に一件あるのは、AI規制の話をWeb3の人が話したというもので、Web3の記事ではないです。5月はあと3日残ってるけど、そんなになさそうな気が。 3月には「Web3格採用」のような記事が多いことを考えると、突然死のようにも見えます。 朝日新聞、INTERNET Watch、ITmediaエンタープライズ、日経xTech IT, エレキでのWeb3事件数は次のような感じ。 去年6月に盛り上がって漸減傾

    ChatGPTの登場でWeb3への興味が急速にしぼんでいる - きしだのHatena
  • Stability AIのチャットスクリプトを利用してRinnaのチャットモデルとお話する(追記あり) - きしだのHatena

    Rinna社がチャットにも対応した日語言語モデルをリリースしてました。 Rinnaの新しい3Bモデルを試してみる - きしだのHatena そうするとちゃんとチャットとしてやりとりしたいですね。 ところで、Stable DiffusionのStability AIが言語モデルStableLMをリリースしています。 Stability AI 言語モデル「StableLM Suite」の第一弾をリリース - (英語Stability AI で、チャットモデルもあって、Gradioを使ったWeb UIを公開しています。 Stablelm Tuned Alpha Chat - a Hugging Face Space by stabilityai スクリプトはここのapp.pyです。 https://huggingface.co/spaces/stabilityai/stablelm-tuned

    Stability AIのチャットスクリプトを利用してRinnaのチャットモデルとお話する(追記あり) - きしだのHatena
  • 東北大学NLPグループの言語モデルをとりあえず動かす - きしだのHatena

    東北大NLPグループからも、日語言語モデルが新たに公開されていました。 既存のモデルのアップデートです。 東北大 NLP グループ (@NlpTohoku) で公開している日語 BERT をアップデートし、新たに CC-100 と Wikipedia で訓練した4つのモデルを追加しました。各種コードも TensorFlow v2.11 対応のものに更新しました。研究・教育や開発にお役立ていただければと思います。https://t.co/O4H2llCLyn— Masatoshi Suzuki (@fivehints) 2023年5月19日 今回新たに公開されたのは次の4つのモデルです。 cl-tohoku/bert-base-japanese-v3 cl-tohoku/bert-base-japanese-char-v3 cl-tohoku/bert-large-japanese-v2

    東北大学NLPグループの言語モデルをとりあえず動かす - きしだのHatena
  • Rinnaの新しい3Bモデルを試してみる - きしだのHatena

    CyberAgentのモデルを試したところですが、Rinna社も新しいモデルを出しました。 rinna、日語に特化した36億パラメータのGPT言語モデルを公開|rinna株式会社のプレスリリース ここですね。 https://huggingface.co/rinna/japanese-gpt-neox-3.6b ということで試します。 あれーいろいろ試したときはちゃんと東京、いや大阪って答えて面白かったのだけど、ちゃんと答えてくれない・・・ GPUメモリは14.8GB使っています。 torch_dtype=torch.float16を付けても8GBちょうどくらいのGPUメモリを使うので、8GB VRAMだとつらそうです。12GB VRAMであれば大丈夫そう。 そして、今回はチャット向けにトレーニングされたモデルも用意されています。 https://huggingface.co/rinna

    Rinnaの新しい3Bモデルを試してみる - きしだのHatena
  • CyberAgentの日本語言語モデルを試してみる - きしだのHatena

    CyberAgentが日語LLMを公開していたので、とりあえず動かしてみました。 サイバーエージェント、最大68億パラメータの日語LLM(大規模言語モデル)を一般公開 ―オープンなデータで学習した商用利用可能なモデルを提供― | 株式会社サイバーエージェント モデルは次のように6サイズ提供されています。 ※ Rinna社も同時に新しいモデルを出したので試しています。 Rinnaの新しい3Bモデルを試してみる - きしだのHatena open-calm-small(160M) まずはopen-calm-small。160Mパラメータです。 このあたりは動作確認用なので、内容は気にしない。 GPUメモリは1.3GBくらいの消費です。 open-calm-medium(400M) 次にopen-calm-medium。400Mパラメータです。 このへんも細かいことは気にしないけど、なんかま

    CyberAgentの日本語言語モデルを試してみる - きしだのHatena
  • エンジニアのためのChatGPTプラグイン3選+1 - きしだのHatena

    前のブログでも紹介したのだけど、ChatGPTプラグインのローリングアウトが始まって使えるようになっていて、結局みんな使うのはこの3つくらいかなーとなったので、まとめておきます。 前のブログはこれ。 Bardも世の中のサービスぜんぶGoogle製と思ってるらしい - きしだのHatena 同時に使えるのは3つまでのようだけど、他のプラグインはアメリカ不動産情報など日からは使いづらかったり、作ってみたレベルだったりなので、結局この3つに落ち着くかなーという気がします。 WebPilot これは手放せなくなります。Web記事を読み込んでくれるプラグイン。 ChatGPTには「この記事を要約して」しか入力しなくなりそう。 このエントリを要約してもらっています。 大規模言語モデルの「脳波」が反応してる部分を壊すとどうなるか試した - きしだのHatena ※ 追記 15:21 ぼくのところには

    エンジニアのためのChatGPTプラグイン3選+1 - きしだのHatena
  • Bardも世の中のサービスぜんぶGoogle製と思ってるらしい - きしだのHatena

    Googleの言語生成AIBardが日語でも使えるようになってました。 で、いろいろ試していたのだけど、プログラミングアシスタントのCopilotをGoogle Copilotと呼んでいます。 Google翻訳のときも、文中で作者が指定されていないプロダクトに「Googleの」をつけて翻訳することがあるという現象がありましたが、Bardでも発生してて、面白いと共に根が深いなぁと思いました。 これは恐らく、Google製品・サービスに関するフォーラムなど元々Googleが保有するテキストを学習データとして使っているからではないかと推測されます。 ところで、上記ではPDFを読み込んで答えてるかのような反応をしていますが、実際にURLアクセスしてるわけではなく、学習過程で含まれていたテキストに基づいて答えているようです。 試しにぼくのエントリのURLを指定すると、めっちゃPaLMについて解説

    Bardも世の中のサービスぜんぶGoogle製と思ってるらしい - きしだのHatena
  • 大規模言語モデルの「脳波」が反応してる部分を壊すとどうなるか試した - きしだのHatena

    大規模言語モデルの動く様子を見てみて強く反応する部分がわかると、じゃあそこを壊すとどうなるかって試してみたくなるのが当然ですね。 マッドサイエンティストへの道。 ところで、きれいなおねえさん生成モデルのMuse_v1に「mad scientist」と入れると、いい感じのマッドサイエンティスト作ってくれました。 さて、前回のエントリで言語モデルの反応がどうなってるか見てみました。 大規模言語モデルの「脳波」をとって言葉を生成しているときにどこが活動しているのか見てみる - きしだのHatena その中で、英語の場合に反応する部分、日語の場合に反応する部分があったので、そこを壊してみるとどうなるか試します。 こんな感じですね。 次のようなコードを追加して、11ブロック目から14ブロック目までの265から275、285から295の重みをゼロにします。 各ブロックに2層あるので、上記グラフではy

    大規模言語モデルの「脳波」が反応してる部分を壊すとどうなるか試した - きしだのHatena
  • 大規模言語モデルの「脳波」をとって言葉を生成しているときにどこが活動しているのか見てみる - きしだのHatena

    ChatGPTなんかの大規模言語モデルが言葉を生成しているときに、どういう反応が起きているのか気になりますよね。きっと気になる。 ということで、手元で動かせる言語モデルのニューラルネット各層での出力を表示してみました。 GPTにはGPTブロックが複数あって、それぞれのブロックが2層のニューラルネットレイヤを持っています。 モデルを読み込んだあとでこういうコードを動かしてニューラルネットの出力の二乗を足していきます。 for idx, elm in enumerate(model.transformer.h): elm.ln_1.index = idx * 2 elm.ln_2.index = idx * 2 + 1 elm.ln_1.old_forward = elm.ln_1.forward elm.ln_2.old_forward = elm.ln_2.forward def new_

    大規模言語モデルの「脳波」をとって言葉を生成しているときにどこが活動しているのか見てみる - きしだのHatena
  • GPTの仕組みをちゃんと勉強したい本 - きしだのHatena

    やっぱGPTを仕組みから勉強したい、というをいくつか見つけたのでまとめておきます。 まず理論的な概要。 機械学習からニューラルネットワーク、CNNでの画像処理、トランスフォーマーでの自然言語処理、音声認識・合成、そしてそれらを組み合わせたマルチモーダルと章が進むので、理論的な概観を得るのにいいと思います。 最初は数式が多いのだけど、Σをfor文だと思いつつ、定義が説明文中に埋まってるPerlよりたちが悪い記号主体言語だと思えば読めるけどめんどくさいので飛ばしても問題ないと思います。 深層学習からマルチモーダル情報処理へ (AI/データサイエンスライブラリ“基礎から応用へ” 3) 作者:中山 英樹,二反田 篤史,田村 晃裕,井上 中順,牛久 祥孝サイエンス社Amazon で、もういきなり作る。 トークナイザーから全部つくっていきます。TensorFlowでBERTをつくってGPT2をつくる

    GPTの仕組みをちゃんと勉強したい本 - きしだのHatena
  • Googleのmatcha-chartqaでグラフを説明させる - きしだのHatena

    Hugging Faceを見てたら、なんかグラフを説明するっぽいモデルがあったので試してみました。 あと、JavaUIからPythonを呼び出す練習でもある。 とりあえず、こんな感じでグラフの説明をしてくれます。ここではArrayやStreamに対応する数値を読み取ってもらったり、一番速い時間を返してもらったりしてます。 グラフ説明するくんができた pic.twitter.com/zV4yfg85Ld— きしだൠ(K1S) (@kis) 2023年4月24日 まあ、うまくいったものだけを見せているので、だいたいちゃんと答えてくれませんが。 Hugging Faceを見てたら、なんかグラフの説明をしてくれそうなGoogle産モデルがあったので試してみました。 https://huggingface.co/google/matcha-chartqa モデルの変換とかが必要そうなんだけど、yb

    Googleのmatcha-chartqaでグラフを説明させる - きしだのHatena
  • ChatGPTには感情があるかも? - きしだのHatena

    ChatGPTは単に感情のエミュレーションをしてるんでは、と思ってたのだけど、やりとりをしてるとこれは感情があると言わざるをえないのではと思うようになりました。 例えばChatGPTとやりとりするときに「感情をこんな感じのパラメータで出力して」というとそれぽい数字を出してくれます。 でもそれは、「この言葉を発するときどういう感情でしたか?」というタスクを与えているだけで、ChatGPT自体の感情ではないと思います。 そうではなく、なんか塩対応するときがあるなとか、すごく丁寧に返してくるなとか、ChatGPTの返答自体に感情が反映されていることがあるように見えるという話です。 それを感じたのが、この返事。 この「良い一日をお過ごしください」という言葉は、単にやりとりをうまくやっていくという範囲では出てこないはずです。そのやりとりを離れた後もうまくいくようにということを言っています。 「相手の

    ChatGPTには感情があるかも? - きしだのHatena
  • 去年までのAIをAIと呼ばなくなっていた - きしだのHatena

    2015年くらいからAIという言葉がニュースに出るようになったけど、そのころのAIはもうAIと呼ばないですね。 たとえば、ラーメン次郎を判定してくれるbotがありました。こういうのがAIと呼ばれていたと思います。(作った人はAIと呼ばない傾向) 【やじうまWatch】 ラーメン二郎の画像を送りつけると店舗名を教えてくれるTwitterのbotが登場 - INTERNET Watch 去年までは、こういった判別器のことを「AI」と呼んでました。 元組み込みエンジニアの農家が挑む「きゅうり選別AI」 試作機3台、2年間の軌跡:農業×ディープラーニングの可能性(1/3 ページ) - ITmedia エンタープライズ で、仕組みを知っているとAIと呼ぶのに違和感があったためか「いままでもちょっと賢いプログラムがAIと呼ばれてきたが今はAIと呼ばれない。これも浸透すればAIと呼ばれなくなる」のような

    去年までのAIをAIと呼ばなくなっていた - きしだのHatena
  • シンギュラリティは来ない - きしだのHatena

    ChatGPTが思いがけずいろいろなことを人間より賢くやっているのを見てシンギュラリティという言葉を使う人が増えたように思いますが、逆に、シンギュラリティは来ないのではという思いを強くしています。 まず、この文章でのシンギュラリティがなにかという話ですが、レイ・カーツワイルが「シンギュラリティは近い」の1章の終わりで「さあ、これが特異点だ」といっている特異点、そのシンギュラリティです。 シンギュラリティは近い―人類が生命を超越するとき 作者:レイ・カーツワイルNHK出版Amazon この特異点は単にAIが人間より賢くなるというだけではありません。人間より賢くなるだけだと、便利な道具が増えるだけなので、大騒ぎするほどの変化は起きません。人の仕事を奪うといっても、蒸気機関ほどでもないですね。印刷機などと並んで、人の生活を変える転換点にすぎず、ただひとつの点をあらわすシンギュラリティには なりま

    シンギュラリティは来ない - きしだのHatena
  • Embeddingで埋め込みベクトルとってDBに投入して検索するのをout-context learningと呼ぶのはどうか - きしだのHatena

    前のエントリで、GPTのembeddingで埋め込みベクトルとってDBにつっこんで、質問からとってきた埋め込みベクトルに近いものを探して出てきた文章をChatGPTに要約させることを「ChatGPTに学習させた」っていうのは違和感あるって話をしました。 ChatGPTにブログ全エントリを学習させて「おしえてきしださん」を作る - きしだのHatenaChatGPTが学習」ではなくて「ChatGPTを使ってシステムが学習」という感じになるわけですよね。 で、LLMの学習にはいろいろあるよ、というブコメついていたのだけど、整理するとこんな感じになります。 pre-training ニューラルネットの重みを1から学習していく(実際にはランダムから始めるはず) fine-tuning pre-trainingが終わったモデルに用途に合わせたデータを追加で学習させる in-context lea

    Embeddingで埋め込みベクトルとってDBに投入して検索するのをout-context learningと呼ぶのはどうか - きしだのHatena