2024-07-24 機械学習勉強会
今週のTOPIC[blog] Looker Studioの魅力と便利な使い方を紹介します[blog]【技術選定/OSS編】LLMプロダクト開発にLangSmithを使って評価と実験を効率化した話[blog] Maestro: Netflix’s Workflow Orchestrator[記事]「オープンソース」を称するAIモデルは実際どのくらいオープンなのか [論文] Learning Intelligent Dialogs for Bounding Box Annotation[論文] SpreadsheetLLM: Encoding Spreadsheets for Large Language Models[blog] Introducing Llama 3.1: Our most capable models to dateDon’t Stop Pretraining: Adapt Language Models to Domains and Tasks概要Domain-Adaptive Pretraining (DAPT)(事前分析) ドメイン間の類似性の分析実験Task-Adaptive Pretraining (TAPT)実験TAPTのためのデータ拡張結果
今週のTOPIC
@Naoto Shimakoshi
[blog] Looker Studioの魅力と便利な使い方を紹介します
- 我々も使っているLooker Studioについてよくまとまったブログ。
- 個人的に参考になった部分
- 昔はSlack通知などをGASで頑張る必要があったが、Slackのチャンネル単位でメールアドレスを取得できるようになった (知らなかった)ので、簡単になった。
- Looker Studio Explorerでアドホックな分析が可能
- クエリ結果からとべて、タブを消せば消えるのでdriveに溜まったりすることもない
- 相対比較で過去の値と比較する
- あんまり使ってなかったが、確かに便利
- 筆者が実際にダッシュボードを作る手順の中で参考になる部分
- 複数のデータソースをまとめる必要がある場合はしておく
- Looker Studio上でのJOINは遅かったり、ミスに気付きにくいため、この段階でJOINは済ませておく
- 丸め過ぎたりサマり過ぎた集計にしすぎない
- のような丸めは後段のBI上でもできるので、DATEで持っておいた方が便利なことが多い
- まずカスタムクエリで可視化、レビューをもらった段階でdbtなどでメンテナンス可能な状態にする
@Yuya Matsumura
[blog]【技術選定/OSS編】LLMプロダクト開発にLangSmithを使って評価と実験を効率化した話
- Gaudiyさんが LangSmithを使った評価・実験管理をいい感じにするライブラリを公開した。
- ‣
Helper library from LangSmith that provides an interface to run evaluations by simply writing config files.
- LangSmithのいい感じのUI上でpromptfooのようないい感じのインタフェースで実験設定を指定できるものとのこと。
- 以下のようにprompt(あるいは任意の関数)や実験ごとの設定値、評価設計を指定するconfigを準備して実行すればおk
- これ自体も便利だと思うし、技術選定に際する進め方が参考になるなと感じた。
- 現在の状況を鑑みるとどのような課題が存在するのか洗い出し、その上で要件を並べ、優先順位をつけた上で捨てるものを捨てた上で、既存のものを試して検証していく…
@Tomoaki Kitaoka
[blog] Maestro: Netflix’s Workflow Orchestrator
- Maestroのソースコードが公開
- ‣
- Maestroの概要
- Maestroは、Netflix内で数千のエンドユーザー、アプリケーション、サービスに対してワークフロー・アズ・ア・サービスを提供する完全管理型のワークフローオーケストレーター
- ETLパイプライン、機械学習ワークフロー、A/Bテストパイプラインなど、多岐にわたるユースケースに対応しており、その水平スケーラビリティにより、単一のワークフロー内で多数のジョブを管理することが可能。
- Maestro自体は2年前にお披露目している
- 特徴と機能
- Maestroは複数の実行戦略を提供しており、Sequential Run、Strict Sequential Run、First-only Run 、Last-only Run、Parallel with Concurrency Limit Runなどがある。
- また、Maestroはパラメータと式言語サポートも提供しており、動的パラメータを用いたコードインジェクションが可能である。これにより、ワークフローの定義が動的になり、複雑なユースケースにも対応できる。
- ワークフローパターン
- Maestroは「foreach」、「条件分岐」、「サブワークフロー」などのパターンをサポートしており、これらを組み合わせることで複雑なワークフローを簡単に定義できる。
@Yuta Kamikawa
[記事]「オープンソース」を称するAIモデルは実際どのくらいオープンなのか
- 「オープンソース」とはソースコードへのアクセスとプログラムの使用や配布に制限がないことを意味
- 大規模言語モデルの複雑さと関連する膨大なデータ量を考慮すると、全てをオープンソースにすることは難しい
- モデルの全てを明らかにすると、商業的または法的リスクにさらされる可能性があるほか、悪用されるリスクもある
- それでも、大規模言語モデルを開発する企業は「オープンソース」というラベルを貼るだけで、「自分たちは透明性のある企業」とアピールしがち
- 実際に「オープンソース」と謳っている大規模言語モデルがどれだけ「オープン」なのか、さまざまな観点で比較
- 完全にオープンなモデルは一つだけ(BloomZ)、ほとんどの場合で重みを公開しているだけで、再現性のないものばかり
- Googleの広報担当者は「あくまでGemmaは『オープン』で、『オープンソース』ではありません」と述べたほか、「既存のオープンソースの概念は、必ずしも全て受け入れられるわけではありません」と語ったらしい
@Shun Ito
[論文] Learning Intelligent Dialogs for Bounding Box Annotation
- CVPR 2018
- 画像のbboxアノテーション(1画像につき1ラベルのケース)を効率化したい
- bboxアノテーションは2つの方法がある
- 何かしらのモデルで予測されたbboxから適切なものを選ぶ → モデルの精度が高い時は効率的
- 人間が描く → モデルの精度が低く間違ったbboxが大量にある時は効率的
- 問題設定
- 予測されたbboxをスコアの高い順に正しいか確認する行動をm回行った後、人間が描く行動に移行する過程を考える
- mを調整して最も効率的なアノテーションプロセスを見つけたい
- 手法
- IAD by predicting probability of acceptance (IAD-Prob)
- 各bboxについて、採用される確率 を予測
- 1つのbboxの確認に 秒、1つのbboxを描くのに 秒かかる場合、 なる bbox を確認し、その中になければ描く行動に移行するのが最適(論文中に証明あり)
- 採用確率を予測するモデルは、bboxの予測スコアやサイズなどの特徴量から、ground truthとのIoUが基準より高いかどうかを判定する二値分類問題で作成
- IAD by reinforcement learning (IAD-RL)
- 強化学習を利用
- 報酬は行動にかかる時間のマイナス () で、この総和を最大化する
- 実験
- シミュレーション実験で、 に設定
- bboxの描き方が2種類 (slow drawing, fast drawing)
- 全体的に提案手法が短い時間でアノテーションできている
@Ryosuke Fukazawa
[論文] SpreadsheetLLM: Encoding Spreadsheets for Large Language Models
スプレッドシートデータを効率よくLLMで処理するためのエンコーディング手法をフレームワークとして提案。Chain of Thought を元にした Chain of Spreadsheet という処理方法を提案し、各種モデルに対してファインチューニングも行なった結果、より良い効率性・性能を得ることができた。
- 概要
- スプレッドシートの効率的なエンコーディング手法「SheetCompressor」を開発。主に3つのモジュールから成り立っています(後述)
- Chain of Spreadsheet という手法を提案しています(後述)
- この手法により、スプレッドシートのトークン数を平均で25倍圧縮することに成功しています。
- スプレッドシートの表検出タスクにおいて、従来手法を12.3%上回る最高性能を達成しました。
- スプレッドシートQAタスクのための「Chain of Spreadsheet (CoS)」手法を提案し、既存のSOTA手法を大幅に上回る性能を示しています。
- オープンソースモデルを含む様々なLLMでの実験を行い、提案手法の有効性を実証しています。
- この手法により、LLMがより大規模で複雑なスプレッドシートを効率的に処理できるようになり、コストの大幅な削減(96%)も実現しています。
- SheetCompressorの詳細
- 構造的アンカーベースの圧縮
- 目的:スプレッドシートの重要な構造情報を保持しつつ、データ量を削減する。
- 手法: a. スプレッドシートの境界や構造を示す「構造的アンカー」(異質な行や列)を特定する。 b. これらのアンカーから一定距離(k行/列)以内の領域を保持し、それ以外を除去する。 c. 結果として、スプレッドシートの「骨格」となる圧縮版を作成する。
- 効果:データ量を大幅に削減しつつ、重要な構造情報を保持する。
- 逆インデックス変換
- 目的:空のセルや重複するデータを効率的に表現し、トークン使用量を削減する。
- 手法: a. セルの値をキーとし、そのアドレスを値とする辞書形式に変換する。 b. 同じ値を持つセルをマージし、アドレスを範囲として表現する。 c. 空のセルは除外する。
- 効果:重複データの削減と空セルの効率的な表現により、トークン数を大幅に削減する。
- データフォーマットを考慮した集約
- 目的:数値データの意味を保持しつつ、さらなる圧縮を行う。
- 手法: a. セルの数値フォーマット文字列(NFS)を抽出する。 b. NFSが欠落している場合、ルールベースの認識器を用いてデータタイプを推定する。 c. 同じNFSやデータタイプを持つ隣接セルを集約する。
- 効果:数値の詳細な値を保持せずに、データの意味や構造を効率的に表現する。
- Chain of Spreadsheetの詳細
- 段階1: テーブル識別と境界検出
- 入力: 圧縮されたスプレッドシートデータと質問
- プロセス: a. LLMが質問に関連するテーブルを特定する b. 特定されたテーブルの正確な境界を決定する
- 出力: 質問に関連するテーブル領域
- 段階2: 回答生成
- 入力: 質問と段階1で特定されたテーブル領域
- プロセス: a. LLMが特定されたテーブル領域を分析する b. 質問に基づいて適切な回答を生成する
- 出力: 質問に対する正確な回答
@Yosuke Yoshida
[blog] Introducing Llama 3.1: Our most capable models to date
- 8B、70B、405Bの3つのモデル
- コンテキスト長は128K
- 対応言語
- 英語、ドイツ語、フランス語、イタリア語、ポルトガル語、ヒンディー語、スペイン語、タイ語
- 商用利用可、他のLLMの改善にモデル出力を使用可能
- benchmark
- GPT-4oやClaude 3.5 Sonnetと同等の性能
Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks
- Suchin Gururangan, Ana Marasović, Swabha Swayamdipta, Kyle Lo, Iz Beltagy, Doug Downey, Noah A. Smith
- ACL 2020
概要
- 先行研究では、RoBERTaのような事前学習モデルにおいて、ドメインデータを用いた継続的な事前学習の利点が示されているが十分に研究されていない
- 単一のドメインしか考慮しておらず、大規模言語モデルよりも小さく多様性に乏しいコーパスを使用している
- データの量や、対象のドメインが事前学習ドメインとの近さによって有用性がどのように変化するかが不明
- RoBERTaを対象のタスクのドメインに合わせて継続して事前学習することの有用性を多様な実験設定で詳しく調査した
- Domain-Adaptive Pretraining (DAPT)
- タスクと同じドメインのデータセットを使った事前学習
- Task-Adaptive Pretraining (TAPT)
- タスクと同じデータセットを使った事前学習
- 計算資源が限られるようなケースでDAPTを行えない場合でも、単純なデータ選択戦略によってTAPTのデータを拡張することが有効な代替手段であることを示した
Domain-Adaptive Pretraining (DAPT)
- RoBERTaを対象のドメインのデータで事前学習
- 生物医学論文 (BIOMED)
- コンピュータサイエンス論文 (CS)
- RealNewsからのニューステキスト (NEWS)
- Amazonレビュー (REVIEWS)
(事前分析) ドメイン間の類似性の分析
- DAPTを実行する前に、対象のドメインがRoBERTaの事前学習のドメインとどれほど類似しているか定量化
- 文書
- 各ドメイン
- Amazonレビュー以外は5万件
- Amazonレビューについては文書が非常に短いため15万件
- 事前学習ドメイン
- RoBERTaの事前学習コーパスに類似したソース (BookCorpus、STORIES、Wikipedia、RealNews) から5万件
- 各ドメインの文書のランダムサンプルから、ストップワードを除く最も頻繁に使用される単語上位1万件の単語を抽出し、各ドメイン間の語彙の重複率(%)を算出
- RoBERTaの事前学習ドメインはNEWSおよびREVIEWSと多くの語彙の重複を持つ
- CSおよびBIOMEDは他のドメインと比べて大きく異なる
- 重複率が低い(ドメイン間の類似性が低い)ほど、DAPTによるパフォーマンス改善幅が大きいことが期待される
実験
- 前処理
- scispaCy、spaCyを用いて文分割
- 学習
- すべてのドメインのデータセットサイズを一致させ、12.5Kステップ、シングルパスで学習
- バッチサイズは2048
- v3-8 TPU
- その他ハイパラは以下の通り
- 各ドメインでのRoBERTaのMLM損失の比較
- NEWSを除くすべてのドメインでMLM損失が減少
- 各ドメインでは、以下に示すように2つのテキスト分類タスクによる実験を行う
- ベースラインはRoBERTa-baseを各分類タスクでファインチューニングしたモデル
- 実験結果
- DAPTの結果
- DAPTがすべてのドメインでRoBERTaよりも改善
- BIOMED、CS、REVIEWSは、RoBERTaに対してデータ数の多寡にかかわらず改善
- 対象のドメインがRoBERTaのソースドメインから離れているほどDAPTが有用
- さらに、各タスクに対して対象ドメイン外のドメインにLMを適応させた場合とDAPTを比較 (¬DAPT列)
- これは、単により多くのデータを学習することによってRoBERTaの改善がもたらされた可能性を懸念したもの
- NEWSにはCS LMを、REVIEWSにはBIOMED LMを、CSにはNEWS LMを、BIOMEDにはREVIEWS LMを使用
- 各タスクにおいて、DAPTは無関係なドメインに適応させる場合を大幅に上回った
- さらに、一般的に、¬DAPTはエンドタスクにおいてRoBERTaよりもパフォーマンスが悪化
- これらの結果を総合すると、ドメインの関連性を考慮せずに単により多くのデータを学習することは、エンドタスクのパフォーマンスに有害であることが示唆されます
Task-Adaptive Pretraining (TAPT)
- RoBERTaを対象のタスクのデータで事前学習
- TAPTはデータセットのサイズが小さくなってしまうが、タスクに特化したデータを用いることでDAPT同様に性能を改善することが示された
実験
- バッチサイズ256で100エポック学習
- 実験結果
- TAPTはすべてのタスクでRoBERTaベースラインを一貫して改善
- RoBERTaの事前学習コーパスに含まれているNEWSでも、RoBERTaを上回る
- 以下のタスクではDAPTを上回る
- RCT、HYPERPARTISAN、AGNEWS、HELPFULNESS、IMDB
- DAPT + TAPTはDAPTの後にTAPTを適用した結果で、すべてのタスクで最高のパフォーマンスを達成する
- ひとつのタスクに適応することで同じドメイン内の他のタスクにも転移するか? (Transfer-TAPT)
- 例えば、BIOMEDドメインのRCTのデータで事前学習し、CHEMPROTのデータでファインチューニング
- 全4ドメインのタスクに関する結果は以下の通り
- TAPTが単一タスクの性能を改善する一方で、クロスタスク転移には悪影響を及ぼす
TAPTのためのデータ拡張
- TAPTで性能を改善するのに十分なデータが利用できず、DAPTに必要な計算リソースが無い場合
- タスクデータと類似するドメインデータを取得し、訓練データに追加
- VAMPIREという軽量なbag-of-wordsモデルを使ってタスクとドメインの埋め込みを取得
- タスクサンプルからドメインサンプルのk候補を選択
- kNN (kNN-TAPT) or ランダム (RAND-TAPT)
結果
- kNN-TAPTがすべての場合でTAPTを上回る
- RAND-TAPTは一般的にkNN-TAPTよりも劣るが、RCTおよびACL-ARCでは標準偏差内
- kを増やすと、kNN-TAPTのパフォーマンスが向上し、DAPTに近づく