🚀 ロシア語チャット、演繹的および常識推論モデル
このモデルは、対話システムのプロトタイプの核心部分であり、2つの主要な機能を備えています。
✨ 主な機能
1. チャットレプリカの生成
この機能では、ダイアログの履歴(1から10までのいくつかの前のレプリカ)をシードとして使用して、チャットレプリカを生成します。
- こんにちは、元気ですか?
- まあまあです。
- <<< このレプリカをモデルから期待 >>>
2. 質問に対する回答の導出
この機能では、追加の事実または「常識」に基づいて、与えられた質問に対する回答を導出します。関連する事実は、別のモデル(例えば sbert_pq)を使用して外部のデータストア(知識ベース)から抽出されることが想定されています。モデルは、指定された事実(または複数の事実)と質問のテキストを使用して、文法的でできるだけ簡潔な回答を構築します。関連する事実は、質問のテキストの前に、まるで相手自身がそれらを言ったかのように指定する必要があります。
- 今日は9月15日です。今何月ですか?
- 9月
モデルは、コンテキストに追加されたすべての事実が実際に与えられた質問に関係することを期待していません。したがって、知識ベースから情報を抽出するモデルは、精度よりも網羅性を優先して、余分なものを追加することがあります。この場合、チャットモデルは、コンテキストに追加された事実の中から必要な事実を選択し、余分なものを無視します。現在のモデルのバージョンでは、質問の前に最大5つの事実を許容しています。
- スタスは16歳です。スタスはポドオリスクに住んでいます。スタスには自分の車がありません。スタスはどこに住んでいますか?
- ポドオリスク
また、モデルは、互いに関連する2つの前提に基づいて、回答を三段論法的に導出することもできます。2つの前提から導出される結論は明示的には現れず、ある意味で回答を導出するために「使われる」と考えられます。
- アリストファンがギリシャの哲学者であり、すべての哲学者は死ぬものである場合、アリストファンは死ぬでしょうか?
- はい
上記の例からわかるように、モデルに入力する事実情報の形式は非常に自然で自由です。
さらに、モデルは、小学1 - 2年生の範囲の簡単な算術問題を解くこともできます。
- 2 + 8はいくつですか?
- 10
📦 インストール
このモデルは、Hugging FaceのTransformersライブラリを使用して実装されています。以下のコードを使用して、モデルをロードすることができます。
💻 使用例
基本的な使用法
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
device = "cuda" if torch.cuda.is_available() else "cpu"
model_name = "inkoziev/rugpt_chitchat"
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.add_special_tokens({'bos_token': '<s>', 'eos_token': '</s>', 'pad_token': '<pad>'})
model = AutoModelForCausalLM.from_pretrained(model_name)
model.to(device)
model.eval()
input_text = """<s>- こんにちは!何をしていますか?
- こんにちは :) タクシーに乗っています
-"""
encoded_prompt = tokenizer.encode(input_text, add_special_tokens=False, return_tensors="pt").to(device)
output_sequences = model.generate(input_ids=encoded_prompt, max_length=100, num_return_sequences=1, pad_token_id=tokenizer.pad_token_id)
text = tokenizer.decode(output_sequences[0].tolist(), clean_up_tokenization_spaces=True)[len(input_text)+1:]
text = text[: text.find('</s>')]
print(text)
📚 ドキュメント
モデルのバリエーションとメトリクス
現在公開されているモデルは7億6000万のパラメータを持ち、sberbank-ai/rugpt3large_based_on_gpt2と同じレベルです。以下は、算術問題の解決精度を検証用のテストセットで測定した結果です。
プロパティ |
詳細 |
モデルタイプ |
sberbank-ai/rugpt3large_based_on_gpt2, sberbank-ai/rugpt3medium_based_on_gpt2, sberbank-ai/rugpt3small_based_on_gpt2, tinkoff-ai/ruDialoGPT-small, tinkoff-ai/ruDialoGPT-medium |
算術精度 |
sberbank-ai/rugpt3large_based_on_gpt2: 0.91, sberbank-ai/rugpt3medium_based_on_gpt2: 0.70, sberbank-ai/rugpt3small_based_on_gpt2: 0.58, tinkoff-ai/ruDialoGPT-small: 0.44, tinkoff-ai/ruDialoGPT-medium: 0.69 |
「算術精度」の列の数字0.91は、91%のテスト問題が完全に正しく解かれたことを意味します。生成された回答が正解からわずかでも逸れる場合は、すべてエラーとしてカウントされます。
📄 ライセンス
このモデルは、unlicenseライセンスの下で公開されています。
🔧 コンタクト
このモデルの使用に関する質問や、改善に関する提案がある場合は、mentalcomputing@gmail.comまでご連絡ください。
引用
@MISC{rugpt_chitchat,
author = {Ilya Koziev},
title = {Russian Chit-chat with Common sence Reasoning},
url = {https://huggingface.co/inkoziev/rugpt_chitchat},
year = 2022
}