サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
やる気の出し方
blog.shikoan.com
2.3k{icon} {views} 複数のLLM(GPT/Claude3)とArxivの検索APIをRAGで統合し、論文サーベイの自動生成を作りました。検索結果の前処理や、サーベイ特有のプロンプトエンジニアリングやソートが重要で、最適化手法として古くからある巡回セールスマン問題(TSP)が有効に機能しました。また、生成部分ではGPTよりClaude3の明確な有効性を確認できました。 できたもの Arxivの検索APIを使って検索拡張生成(RAG)したらサーベイを自動生成できた やっていること Arxivの検索ワードをGPT-4-Turboで生成 ArxivのAPIを叩いてヒューリスティックでフィルタリング OpenAIのEmbedding APIを叩く Embeddingに対して巡回セールスマン問題(TSP)を解いてソートをかける 論文の要旨をGPT-3.5-Turboで要約 ソートした
PyTorchで1枚の画像を複数の小さい画像(パッチ)に切り出す方法を紹介します。TensorFlowだとtf.image.extract_patchesにあたる処理です。 torch.Tensor.unfold torch.Tensor.unfoldという関数を使います。 unfold(dimension, size, step) → Tensor という形式で、順番にパッチを切り出す次元、パッチサイズ、パッチを切り出す間隔ですね。次元は縦と横で取ればいいので画像の4階テンソルなら2,3で取れば良いでしょう。 コード この画像を「cat.jpg」とします。 128px × 128pxのパッチで、64px間隔に取り出すものとします。 import torch import torchvision from PIL import Image import numpy as np # テンソル
LLaMA.cppのスループットをローカルで検証してみました。OpenLLaMA 7B/13Bをベースに、CPU/GPUのそれぞれの生成速度(token per second)と量子化の関係を実験的に調査します。 はじめに LLaMA.cppを使うとモデルを高速に軽量に実行できますが、量子化とスループットの関係、デバイスごとの関係がよくわからなかったので検証しました。 環境 LLaMA.cpp https://github.com/ggerganov/llama.cpp 最新版は変換後のモデルがggufフォーマットだが、旧版のggmlのフォーマットを使用(元の利用想定が、MiniGPT4.cppで旧版に統一する必要があったため) コミットIDはdadbed9になるように、git cloneしたあとcheckoutする ビルドはcuBLASを使ってビルド。実行時のみGPUを使うかどうかを切り
タイトル:GRiT: A Generative Region-to-text Transformer for Object Understanding 著者:Jialian Wu, Jianfeng Wang, Zhengyuan Yang, Zhe Gan, Zicheng Liu, Junsong Yuan, Lijuan Wang(所属:ニューヨーク州立大学バッファロー校、Microsoft) 論文:https://arxiv.org/abs/2212.00280 コード:https://github.com/JialianW/GRiT ざっくりいうと 物体検出にImage Captioningを導入した「Dense Captioning」の研究 検出とテキスト生成の2段階からなり、画像特徴と、テキストトークンの特徴をText Decoderに入れてキャプション生成 クローズドセット
GPT-4/ChatGPTと画像生成(Stable Diffusion)の組み合わせを試したら、とんでもないクォリティのイラストができたので記事にしました。GPT-4に情景描写をさせてプロンプトに変換するものですが、あまりにGPTの描写能力が強いです。もう人間が1からプロンプトを作る時代は終わったのではないでしょうか。 はじめに あまりにやばい画像ができたので公開するかどうか迷っていたのですが、そのうち誰か公開しそうだったので公開します。 GPTを使って画像生成のプロンプトを生成するのは誰でも思いつきそうなものなのですが、特に最近出たGPT-4では得意な内容がある程度明らかになってきました。 エンジニア兼SF作家がGPT-4執筆支援を実戦投入できないか実験してわかったこと これを見ると、 文章構成 情景描写や人物描写 どこかに当てはまる言葉を探索したい このへんが強いそうですね。あれ、ちょ
Attentionはこれまでの研究から多く有用性は報告されていたのですが、ネットワークの内側で使われることが多く、わかりやすく差を体感できる例を自分は知りませんでした。今回はCLIPのAdapterという点から、Attentionの有無による精度比較を行ってみます。 はじめに Adapterとは 最近研究でよく見られるようになりました。基盤モデルのような大きな事前訓練済みモデルに対し、小さなネットワークを差し込み、その部分のみ訓練することで任意の訓練データに対して適用させるものです。ファインチューニングとの違いは以下の通りです。 Adapter 追加小さなネットワークのみ訓練、元モデルは訓練しない 訓練速度が速い 元モデルはそのままなので、破滅的忘却に悩まされるリスクが減る ファインチューニング モデルの全体ないし、末尾の特定層のみ訓練 特に元モデルが大きくなると、訓練速度がAdapter
CoCaとBLIP2の訓練済みモデルで遊んでみました。「ImageNet 1Kのゼロショット精度」と「キャプション生成」の2点について検証してみました。 きっかけ ほぼ同時期にBLIP2とCoCaと訓練済みモデルが公開されました。 https://twitter.com/LiJunnan0409/status/1621649677543440384 CoCaは以前から公開されていましたが、LAIONデータセットで訓練されたモデルがOpenCLIPに統合されたものとして公開されました。 Training Contrastive Captioners BLIP2とCoCaについて 一言でいうと、BLIP2もCoCaもキャプション生成が可能なモデルです。 以前こちらの記事に書いたのですが、BLIP2は固定の画像エンコーダーと固定の大規模言語モデルを、学習可能なQ-Formerでつなげて、画像を起
タイトル:Large Language Models are Zero-Shot Reasoners 著者:Takeshi Kojima, Shixiang Shane Gu, Machel Reid, Yutaka Matsuo, Yusuke Iwasawa 所属:東京大学、Google Research カンファ:NeurIPS 2022 論文URL:https://arxiv.org/abs/2205.11916 コード:https://github.com/kojima-takeshi188/zero_shot_cot ざっくりいうと 大規模言語モデル(LLM)で算術問題などを解くための連鎖的なプロンプト「Zero-shot-CoT」を提唱 GPT-3に「ステップバイステップで考えよう」を追加するだけで、MultiArithのゼロショット精度が17.7%→78.7%でSoTA L
タイトル:BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models 著者:Junnan Li, Dongxu Li, Silvio Savarese, Steven Hoi(Saleforce Research) 論文URL:https://arxiv.org/abs/2301.12597 コード:https://github.com/salesforce/LAVIS/tree/main/projects/blip2 HuggingFace:https://huggingface.co/spaces/taesiri/BLIP-2 ざっくりいうと 視覚言語(V&L)モデルにおいて、事前学習コストを減らしつつ精度を出すための研究 事前訓練済みの画像
自然言語処理モデルT5を使って文章単位の埋め込み量(Sentence Embedding)を取得することを考えます。T5のEmbeddingはトークン単位ですが、平均を取ることで、簡単に文章単位に変換できます。Sentence T5としてモデルが公開されていない場合でも、既存のT5から自在に特徴量を取得できることを目標とします。Flan-T5からSentence Embeddingをとって見たりします。 はじめに 普段画像処理ばっかりやってる自然言語処理素人だけど、Imagenで使っていたり、Unified IOがベースにしていたり、何かとT5を聞きますよね。 調べていたらtransformersのライブラリから簡単に利用できることがわかったので、今回遊んでいきたいと思います。このブログでは珍しいNLPの内容です。 問題点 (自然言語処理やっている人には当たり前かもしれませんが、)一つ問題
タイトル:Hierarchical Text-Conditional Image Generation with CLIP Latents リンク:https://cdn.openai.com/papers/dall-e-2.pdf 所属:OpenAI コード:DALL・E 2の前の段階のGLIDEは公開されているが、これは非公開(2022年4月時点) ざっくりいうと 訓練済みCLIPと拡散モデルを使った、テキスト→画像による生成モデル CLIPの画像埋め込み特徴を生成するような、拡散モデルベースの事前分布モデルを開発 先行研究のGLIDEの改良という位置づけだが、多様性に富む画像生成に成功 要旨 2段階のモデルを提案 テキストキャプションを与えてCLIP画像埋め込みを生成する事前処理 画像埋め込みを条件として画像を生成するデコーダ 画像表現を明示的に生成することで、写実性とキャプションの
PythonからVOICEVOXの音声を合成する方法を紹介します。VOICEVOXの合成音声を、Azure Text to SpeechやGoogle CloudのText-to-speechとも比較してみました。GoogleやAzureと場合によっては互角になりうる期待のソフトウェアです。 VOICEVOX、皆さん使ってますか? 2021年8月ごろに彗星のように登場した、無料なのにかなり優秀な音声合成ソフトウェアです。 今回Pythonから使いたかったのですが、コードベースで使う解説記事がどこにもなかったので書いてみました。 https://voicevox.hiroshiba.jp/ GUIでの使い方は解説されている記事が多いので、この記事ではPythonからコマンドラインベースで音声を出力する方法を書いていきます。インストールのやり方は省略します。 VOICEVOX ENGINE V
特徴量処理(特徴量エンジニアリング)でよく使う処理として、「A,B,C」「1,2,3」といったカテゴリー変数をOne-Hotベクトル化するというのがあります。SkelarnのOneHotEncoderでもできますが、Pandasのget_dummies()を使うと、もっと統合的にすることができます。それを見ていきましょう。 One-Hotエンコーディングとは One-Hot、つまり1つだけ1でそれ以外は0のベクトル(行列)を指します。経済学や統計学では「ダミー変数」と呼ばれることもあります。One-Hotエンコーディングもダミー変数もやっていることはほとんど同じで、カテゴリー変数を0,1の変数に変換して、学習器が学習しやすい形に変換しているということです。 例えば次のようなクラス変数があったとしましょう。0,1,2はクラス0に属する、クラス1に属する、…を表します。 >>> X=np.ar
OpenCVで作成した動画をサイトで表示する場合、ローカルで再生できていても、ブラウザ上では突然プレビューがでなり、ハマることがあります。原因の特定が難しい現象ですが、動画を作成する際にH.264形式でエンコードするとうまくいきました。その方法を解説します。 MPV4は手軽だが… OpenCVで動画を作成する例で検索すると、おそらくこっちのほうが多く出てくると思うのですが、fourccにMP4Vを指定するパターンです。 directory以下のPNGファイルを1つのMP4ファイルにまとめてみましょう。 import cv2 import glob # よくある例 def create_mp4(directory): # コーデックの指定 fourcc = cv2.VideoWriter_fourcc("m", "p", "4", "v") # 引数はファイル名、コーデック、FPS、解像度(
オプティマイザーはMomentumで係数は0.9です。このオプティマイザーの設定はケースを通じて変更しません。ただしその他の設定は途中で変更します。なお、試行回数はすべて1回なので精度に誤差があるかもしれません。 10層CNNは、32×32×64が3層、16×16×128が3層、8×8×256が3層、Global Average PoolingしてSoftmaxが1層という構成です。詳しくは末尾のコードを見てください。 Data Augmentationなしでの精度(テスト精度)は88.95%とりました。テストデータ1万個に対する混同行列は次の通りです。さすがにミス多いですね。 ベースライン:Standard Data Augmentation ここからData Augmentationを入れます。まず、CIFAR-10のData Augmentationとして定番の左右反転+上下左右4ピ
他の条件は以前と同じです。 バッチサイズは640 Weight Decayはなし MNISTの場合と同様に、テストデータを基準に1クラスあたりのサンプル数を500、200、100、50、20、10と変化させる。訓練データのサンプル数はテストデータの各5倍。 TensorFlow/KerasのTPUで訓練する すべてのケースについて5回試行した Macro F1スコアで比較 試行ごとに変えた条件は次の通りです。 長く訓練してみる(100epoch→250epoch) ネットワークをMobileNetに変更する ネットワークをResNet50に変更する ネットワークを10層から3層に変更する バッチサイズを640→128に変更する(学習率も適切に合わせる) Affinity Lossの直前のBatchNormalizationを削る SoftmaxとAffinity lossを混合して訓練する
あるニュース記事で、ディープラーニング=最小二乗法で三次関数なんていう「伝説の画像」が出回っていたので、それに対して突っ込みつつ、非線形関数という立場からディープラーニングの本当の表現の豊かさを見ていきたいと思います。 きっかけ ある画像が出回っていた。日経新聞の解説らしい。 伝説の画像になるぞこれhttps://t.co/CpeWKrHseP pic.twitter.com/qfTUVt5j7A — 猫じゃら美少女 (@tonets) 2019年2月19日 確かにこれは伝説の画像だ。今までディープラーニングの入門書を立ち読みしていても、ディープラーニング=最小二乗法で三次関数なんて解説は見たことがない。画期的な説明だ。 しかし、この画像、ディープラーニングを少しでもやったことある人から見ればかなり違和感を覚える解説だと思う。そこを突っ込み始めるとディープラーニング、あるいはニューラルネッ
Google ColaboratoryからGoogle Driveに保存する方法はいくつかあるのですが、最近改良が入って簡単に書き込めるようになっていました。その方法を見ていきます。 まずはGoogle Driveをマウント Google Driveをマウントし、Colabの中で使えるようにします。 from google.colab import drive drive.mount('./gdrive') これはカレントディレクトリ以下の「gdrive」というフォルダに、Google Driveをマウントするよという意味です。このフォルダは何でもいいです。Google Driveのファイルはここで指定したフォルダ(gdrive)以下の、「gdrive/My Drive」フォルダに格納されます。 このコードを実行すると認証URLが出てくるので、その認証コードをコピーし認証させます。この認証
Qiitaからお引越しテスト。Qiitaの記事では、ニューラル協調フィルタリングでMyAnimeListのレコメンドデータから、アニメの作品単位の特徴量抽出を行い、クラスタリングの手法を用いて、アニメを10個のグループに分類しました。この記事では、同様に抽出した特徴量を用いて、Word2Vecの「王+女-男=女王」のようなアニメ単位での足し算・引き算を行います。 元データはKaggleのMyAnimeListを使いました。 リポジトリ https://github.com/koshian2/MyAnimeList_NCF 事前準備として、上記リポジトリからdataをダウンロードしておきます。また、analyze_plus.pyの表示用の関数を定義しておきます。コサイン類似度でソートしたり、IDを探してきたりする関数なので、特に解説はいらないと思います。 注意点 Qiitaのときと同じですが
36{icon} {views} LLMをデプロイする際に、LLM部分の量子化が必要になることが多いです。MiniGPT4のようなVLMに焦点をあて、AutoGPTQとBitsAndBytesという2つの量子化フレームワ […]...
次のページ
このページを最初にブックマークしてみませんか?
『Shikoan's ML Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く