almost weekly useful materials - 03/29 -
Opened this issue · 11 comments
利用目的にそって学習後の性能を疑うこと
AIの学習やり利用は簡単になってきたがその性能は適用ユースケースの前提条件を踏まえた上で、批判的に評価する必要があることを論じている記事
物体検出モデルを念頭に置いたチェックポイントを紹介しており、プロジェクト企画時にとても参考になる内容
PRJ全般に関するチェックポイント
- 課題に対してデータの質と量は十分か
- 問題設定は難しすぎないか?それしか方法がないのか?
物体検出に関するチェックポイント
- 背景による性能変化
- カメラの設置高度、設置角度による性能変化
- occlusionによる性能変化
- 照明環境による性能変化
- 検出対象の姿勢による性能変化
- 検出対象の属性揺らぎによる性能変化
上記全てをクリアすることはまず不可能なので、何が妥協できるかを検討することが大事。
また、モデルに全部丸投げするのではなく、適切な後処理、前処理を検討することが大事
撮影環境に関するチェックポイント
- 解像度
- 視野角
- フレームレート
- 撮像遅延
- 歪み
- SN比
コメント
適用ユースケースが持つ前提条件はbiz側の方がよく知っていることが多いので、dev側がちゃんとそれを引き出せるようにしないといけないなぁと
出典
GPTが出した回答の確からしさを見えるようにしてみる
ChatGPTを利用したQ&Aシステムの最もらしさを与えたコンテキストと出力の含意タスクを解くことで評価することを試みている記事。
含意タスク部分もChatGPTに丸投げするのではなく、GPT3をファインチューニングしたモデルで行っているのが印象的
ファインチューニングにはJNLIの学習データを加工した100行サンプルを利用。
コメント
GPT-3を叩く料金とChatGPTを叩く料金がダブルでかかってしまうが、面白いアイデアである。
出典
ChatGPTに自社データを組み込んで新しい検索体験を模索してみました
ChatGPTを用いて、社内の文書データに対するQ&A・検索システムを構築する方法の紹介
大枠の流れとしては、質問文(検索query)に関係がありそうな文書を引っ張ってきて、適宜要約をかけながらpromptに埋め込むというもの。
コメント
基本的な型として勉強になる。
出典
Alpaca まとめ
GPT3の25分の1のパラメータ数で、同程度の性能を持つAlpacaの解説記事
以下気になったところだけ抜粋
- 「Alpaca」は、「LLaMA 7B」(Meta)をファインチューニングした言語モデルです。
- 「text-davinci-003」による「self-instruct」で生成された52Kの命令追従型の学習データを使って学習
- 「Alpaca」は学術研究のみを目的としており、商用利用は禁止しています。
- 「self-instruct」のシードセットには人間が書いた175の命令と出力のペアを用意、その後、「text-davinci-003」にシードセットを文脈上の例として、さらに命令を生成させる
- 生成パイプラインを簡略化することで、「self-instruct」を改良し、コストを大幅に削減し、OpenAI APIを使用して500ドル未満のコストで、52Kのユニークな命令と出力を生成
- 学習データ生成の要件をtext-davinci-003に明示的に与える新しいプロンプトの記述
- 20個の学習データを一度に生成するという、積極的なバッチデコードを採用し、学習データ生成のコストを大幅に削減
- 7Bの「LLaMA」のファインチューニングにはHuggingFaceの学習フレームワークを使用し、80GBのA100を8台使用して3時間かかりました。これは、ほとんどのクラウドコンピューティングプロバイダーで100ドル以下のコストになります。
コメント
めちゃくちゃありがたい解説記事だった。
この一連の処理はLLMの蒸留とみなせるような気がする。
個人的には学習データを低コストで生成できるようにした工夫の貢献が一番重要に見えた。
商用利用できるベースモデルの公開が待ち遠しいところ。
出典
手元で動く軽量の大規模言語モデルを日本語でファインチューニングしてみました(Alpaca-LoRA)
Alpacaをlow-rank adaptationでさらに軽量化させたAlpaca-LoRAモデルをalpaca-datasetの日本語訳を用いて学習させた取り組みの紹介
以下気になったところだけ抜粋
- low-rank adaptation(LoRA)とは、Microsoftが提案した手法で、パラメータを10000分の1、GPUメモリ要件を3分の1に削減できます。(手法の詳細は、LINE社のインターン生が書いたこちらの記事が詳しいです。)
- Alpaca-LoRAは、Alpacaというモデルをlow-rank adaptation(LoRA)という手法で軽量化したもので、MacBookやGoogle Colab、Raspberry Piでも動かすことができます。
- 翻訳には愚直にChatGPTのAPIを使って訳しました。5.2万件のデータで、instructionとinputとoutputの3種類のフィールドがあるので、10数万回APIをコールしました。翻訳時間は5時間ほどで、費用は$45ほどでした。
- Google Colab Pro+に課金しました(月額5701円)。ファインチューニングは6時間半くらいで終わりました。
- 今回のファインチューニングをしたことで、悪化しています。他にもいくつか試しましたが、今回のチューニングでは、上手く行かないことのほうが多かった
コメント
LLMを軽量化させる取り組みの進展が思ったより早いなぁという感覚を覚えた。取り組み自体は上手くいってないという結果ではあるが、1万円ちょっと程度でLLMを学習させられる世界線は熱い
出典
資源として見る実験プログラム
適切な実験と考察を回すための実験用コードの書き方について解説しているスライド
以下気になったスライドを抜粋
コメント
実験用コードを整備する上での実践的なtipsがふんだんに盛り込まれている良資料。
出典
BigQuery JSON型によりログの効率化は可能か?
絶えず変化するログ出力に対応するため、json文字列で保存されていたログの保存容量と読み出しデータ量の効率化方法を模索している記事
BigQueryにおいてはJSON型というものが利用できるため、保存容量を削減したい場合においてはjson文字列をjson型にし、さらにデータ型をつけることでネイティブ化することでコストを削減することが可能。
一方で、配列へのアクセス際の読み出し容量を削減するためには、要素ごとにログを出力しないと、全要素を見ることになってしまうようだ
読み込みバイト数が減らなかったのはJSON型において、構造体の配列 (array of structs: AoS) へのアクセスが最適化されていないためです。
JSON型において、構造体が配列に含まれている場合、その構造体の一部要素にアクセスすると、構造体のすべての要素が読み込まれてしまいます。(公式問い合わせ結果)
コメント
サービスの成長共にログはめちゃくちゃ重たくなってくるので、こういう効率化はとても大事。
このログが1週間で2TBずつ蓄積しており取り回しが悪い状況になっていました。
出典
BloomをLoRaを使い日本語alpaca datasetでfine tuneを動かす
表題の通り、ライセンスが緩いBloomに対してLoRAで軽量化を行い日本語alpaca datasetを用いたfinetuningをしている記事
Bloomは日本語に非対応だがhaggingfaceにも登録されていて取り回しやすいのが良い点であった、そいつを日本語対応可能にさせるのは熱い。
コメント
self instructでLLM学習用のデータを作成できるようにしたalpaca datasetの貢献がデカすぎる
出典
Pandas 2.0はPolarsよりも速いのか?
PyArrowが使えるようになるPandas 2.0とPolarsの速度比較をさまざまな処理で行っている記事
unique処理以外はPolarsの方が早いという結果を得ている
コメント
Polarsつよし
出典
ChatGPTプロンプトエンジニアリングのコツ8箇条~OpenAI公式のベストプラクティスから学ぶ~
表題の通り、以下テクニック部分だけ抜粋
プロンプトの先頭に指示を入れ、##または"""で指示と文脈を区切る。
NG
以下の文章を、最も重要な点を箇条書きにして要約する。
{文章の中身}
better
以下の文章を、最も重要な点を箇条書きにして要約する。
Text: """
{文章の中身}
"""
具体的かつ説明的で、できるだけ詳細に説明する
NG
OpenAIについて詩を書く。
OK
OpenAIについて、最近のDALL-E(DALL-Eはテキストから画像へのMLモデル)の製品発表に焦点を当て、{有名な詩人}のスタイルでインスピレーションを与える短い詩を書いてください。
例示を通して、出力の形式を説明する
例(例1、例2)を通して、望ましい出力形式を明確にする。
NG
以下のテキストに記載されているエンティティを抽出する。以下の4つのエンティティタイプ:会社名、人名、特定のトピック、テーマを抽出する。
Text: {文章の中身}
OK
以下のテキストに記載されている重要なエンティティを抽出する。まずすべての会社名を抽出し、次にすべての人名を抽出し、次に内容に合った特定のテーマを抽出し、最後に一般的な包括的テーマを抽出する。
希望するフォーマット:
会社名: <コンマで区切られた会社名のリスト>
人名: -||-
特定のテーマ: -||-
一般的なテーマ: -||-
Text: """
{文章の中身}
"""
"ふわっと"した不正確な記述を減らす
NG
この製品の説明文は、かなり短く、数文のみで、それ以上にはならないようにします。
OK
この製品について、3~5文の段落で説明すること。
やってはいけない事ではなく、代わりに何をするか指示する
NG
以下は、エージェントとお客様との会話です。ユーザー名やパスワードを尋ねないでください。繰り返さないでください。
お客様:自分のアカウントにログインできないんだけど。
代理店:
better
以下は、エージェントとお客様との会話です。エージェントは、問題の診断と解決策の提示を試みますが、PIIに関連する質問は控えてください。ユーザー名やパスワードなどのPIIを尋ねる代わりに、ヘルプ記事(www.samplewebsite.com/help/faq)を紹介する。
お客様:自分のアカウントにログインできないんだけど。
代理店:
モデルを特定のパターンに誘導するための枕詞を使用する。
NG
# Write a simple python function that
# 1. Ask me for a number in mile
# 2. It converts miles to kilometers
better
# Write a simple python function that
# 1. Ask me for a number in mile
# 2. It converts miles to kilometers
import
例えばコードを書いてほしい時はimportから始めたり、SQLを書いてほしい場合はSELECTから書いたりする
コメント
人に指示を出す時と同じようにしましょうって感じですね。
出典
ChatGPT Outperforms Crowd-Workers for Text-Annotation Tasks
2,300件のツイートデータに対するクラス分類アノテーションとして、ChatGPT, Amazon Mechanical Turkの性能とコストを比較したレポート
グラフの通り、ChatGPTの方が性能が高いようで、コストもChatGPTを用いると1アノテーション$0.003とMTurkの20分の1とことでコスパがかなり良いとのこと
コメント
簡単なタスクはわざわざ人にやってもらわない方がいい世界線きたか...?