Argillaの使い方


# Argillaとは
Argillaは、LLMのためのオープンソースのデータキュレーションプラットフォームです。Argillaを使用することで、データのラベリングからモデルのモニタリングまで、MLOpsサイクルの各ステップでサポートを提供しています。

https://docs.argilla.io/en/latest/index.html


https://speakerdeck.com/anyscale/smart-shortcuts-for-bootstrapping-a-modern-nlp-project

# 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/b37582aa-a135-baea-2ab0-0b6d46a834d0.png)



# Argilla Feedback

Argilla Feedbackは、ラベラーやアノテーターからのフィードバックデータを収集・管理するために設計された強力なプラットフォームです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/21027e45-55d8-816b-794b-fdc679492ca2.png)


1. **configure users and workspaces**：
プロジェクトに関わるユーザーと作業領域を設定します。
2. **Configure dataset**：
解析するデータセットの構成を設定します。
3. **Add records**：
データセットにレコード（データポイント）を追加します。
4. **assign records to team**：
特定のレコードをチームメンバーに割り当てます。
5. **metadata**：
データに関する補足情報、つまりメタデータを管理します。
6. **vectors**：
データを数値ベクトル化し、アルゴリズムが処理しやすい形式に変換します。
7. **suggestions and responses**：
システムからの提案に対する反応や、それに基づくフィードバックを集めます。
8. **train models**：
収集したデータとフィードバックを使用して機械学習モデルを訓練します。
9. **sort and filter**：
データセットを並べ替えたり、特定の条件でフィルタリングします。
10. **metrics**：
データセットやモデルのパフォーマンスを評価するための指標を設定します。


# 

Argilla Feedbackは、ラベラーやアノテーターからのフィードバックデータを収集・管理するために設計された強力なプラットフォームです。

Argilla Feedbackのエンティティとその関係を解説します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/b42386f9-af79-5d58-9d9e-dbf0eadb178c.png)


1. **Dataset（データセット）**: 
データセットは、フィードバックレコードのコレクションを表し、フィードバックデータを整理・管理するためのコンテナとして機能します。

2. **Record（レコード）**: 
レコードは、データセット内の個々のフィードバックデータポイントを表し、ラベラーにフィードバックしてもらいたい情報やデータが含まれます。

3. **MetadataSetting、VectorSetting、Field**: 
これらはレコード内の特定のデータ要素のスキーマまたは構造を定義し、ラベラーが情報を見たり、対話したりする際に必要なコンテキストを提供します。

4. **Question（質問）**: 
フィードバックのためにラベラーに提示される具体的な問い合わせや指示を表します。異なるタイプの質問がサポートされており、ラベラーを誘導し、彼らのインプットを取得する上で重要な役割を果たします。

5. **Response、Suggestions**: 
レスポンスはデータセット内の特定の質問に対してラベラーが提供した入力を表し、サジェスチョンは機械が生成したフィードバックをラベラーに提供し、フィードバック収集プロセスを強化します。

6. **Metadata（メタデータ）**: 
レコードに持たせたい追加情報を保持し、データセット内でのレコードの位置づけや、そのレコードに関する簡単な情報を提供します。

7. **Vector（ベクトル）**: 
ベクトルを使用して、レコード内のフィールドまたはその組み合わせの意味的な意味を表し、データセット内のレコードを検索する際に使われます。


# Argilla Feedbackの質問タイプ

Argilla Feedbackプラットフォームでは、以下のような異なるタイプの質問をサポートしています。

## テキスト質問
- **目的**: ラベラーからの自然言語フィードバックやテキスト回答を収集。
- **利点**: 詳細で説明的なフィードバックの提供が可能。
- **適用例**: 複雑なデータポイントについての意見や、データ解釈に関する詳細な説明。
- **具体例**: 画像に写っている物体の説明をしてください。
- **入力されるフィードバックの例**: 「画像には、木の下でくつろいでいる黒猫が写っています。」


## 評価質問
- **目的**: 数値評価のフィードバックを収集。
- **利点**: 定量的なフィードバックを得られるため、特定の基準の評価に有用。
- **適用例**: データの品質やラベルの正確性など、特定の属性の数値による評価。

## ラベル質問
- **目的**: 単一のラベルを用いたフィードバックの収集。
- **利点**: 相互に排他的な分類を得られる。
- **適用例**: オブジェクトの種類やセンチメントなど、一意のカテゴリーを指定する場合。
- **具体例**: この記事の情報の信頼性を1から5のスケールで評価してください。
- **入力されるフィードバックの例**: 「4 - 情報はかなり信頼できると思いますが、一部のデータソースが不明です。」

## MultiLabelQuestion（マルチラベル質問）
- **目的**: 1つまたは複数のラベルでフィードバックを収集。
- **利点**: 排他的でない分類が可能。
- **適用例**: 画像内の複数のオブジェクトを識別する場合や、複数の感情が表現されているテキスト。
- **具体例**: このテキストに表れている感情を全て選んでください：幸福、驚き、恐怖、不安。
- **入力されるフィードバックの例**: 「幸福、驚き」

## ランキング質問
- **目的**: ラベラーの嗜好に基づいたフィードバックの収集。
- **利点**: 複数の選択肢から優先順位をつけ、ラベラーの好みを詳細に理解する。
- **適用例**: 特定の特徴や属性に対するラベラーの好みの順序付け。
- **具体例**: 次の商品特徴を最も重要なものから順に並べてください：価格、品質、デザイン、ブランド名。
- **入力されるフィードバックの例**: 「1. 品質、2. 価格、3. デザイン、4. ブランド名」

# Argilla のデータ構造

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/457e1526-e916-06fb-46f9-08f8a384b902.png)

データセット
Argillaでは、データセットは共通のタイプのレコードのコレクションです。プログラムを使用してデータセットを構築し、ウェブアプリでレコードを注釈付けすることが可能です。また、データセットを様々なフォーマットにエクスポートしたり、モデルトレーニングの準備をしたりすることもできます。

レコード
レコードは、テキスト入力とオプションの予測や注釈から構成されるデータ項目です。予測はシステムによる分類、注釈は手動で割り当てられたグランドトゥルースです。

タスクの例
テキスト分類（シングルラベル）: テキストがどのカテゴリーに当てはまるかを予測するタスクです。例えば、NLPモデルを用いて文学作品を分類することが考えられます。

マルチラベルテキスト分類: テキストに複数のラベルを割り当てるタスクです。例えば、ツイートが複数のカテゴリーに当てはまるかどうかを判断します。

トークン分類: 入力テキストを単語や音節に分割し、それらに特定の値を割り当てるタスクです。例えば、文中の固有名詞や地名を識別します。

Text2Text: モデルがトークンのシーケンスを受け取り、新しいテキストを生成するタスクです。例えば、機械翻訳やテキスト要約がこれに該当します。

注釈と予測
注釈: 人間のアノテーターによってレコードに割り当てられた情報です。
予測: 機械によってレコードに割り当てられた情報です。
メタデータ
レコードに追加情報を提供するために使われるデータです。例えば、レコードがトレーニングセットに属しているかどうかなどの情報が含まれます。