はじめに
公開されたので、触っていきます
rinnaはQwen-7Bと14Bの日本語継続事前学習モデル「Nekomata」シリーズを公開しました。 Nekomata 14B Instructionのベンチマークは一部の70Bと同レベルまで到達しています。
— rinna Research (@rinna_research) 2023年12月21日
↓プレスリリースhttps://t.co/uxvx3I3NWU
↓公開モデルhttps://t.co/bgDs6JDy71
↓ベンチマークhttps://t.co/F2Ja9NsmdH pic.twitter.com/IaEKaVMnT5
環境
準備
ライブラリを入れます
!pip install tiktoken !pip install transformers_stream_generator !pip install transformers !pip install torch
推論
モデルのロード
import torch from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("rinna/nekomata-14b-instruction", trust_remote_code=True) # Use GPU with fp16 model = AutoModelForCausalLM.from_pretrained("rinna/nekomata-14b-instruction", device_map="auto", trust_remote_code=True, fp16=True)
翻訳プロンプト
instruction = "次の日本語を英語に翻訳してください。" input = "大規模言語モデル(だいきぼげんごモデル、英: large language model、LLM)は、多数のパラメータ(数千万から数十億)を持つ人工ニューラルネットワークで構成されるコンピュータ言語モデルで、膨大なラベルなしテキストを使用して自己教師あり学習または半教師あり学習によって訓練が行われる。" prompt = f""" 以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: {instruction} ### 入力: {input} ### 応答: """ token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt") with torch.no_grad(): output_ids = model.generate( token_ids.to(model.device), max_new_tokens=200, do_sample=True, temperature=0.5, pad_token_id=tokenizer.pad_token_id, bos_token_id=tokenizer.bos_token_id, eos_token_id=tokenizer.eos_token_id ) output = tokenizer.decode(output_ids.tolist()[0]) print(output)
結果
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: 次の日本語を英語に翻訳してください。 ### 入力: 大規模言語モデル(だいきぼげんごモデル、英: large language model、LLM)は、多数のパラメータ(数千万から数十億)を持つ人工ニューラルネットワークで構成されるコンピュータ言語モデルで、膨大なラベルなしテキストを使用して自己教師あり学習または半教師あり学習によって訓練が行われる。 ### 応答: Large language models (LLM) are computer language models consisting of artificial neural networks with millions to billions of parameters that are trained by self-supervised or semi-supervised learning using massive unlabeled text.<|endoftext|> '\n以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。\n\n### 指示:\n次の日本語を英語に翻訳してください。\n\n### 入力:\n大規模言語モデル(だいきぼげんごモデル、英: large language model、LLM)は、多数のパラメータ(数千万から数十億)を持つ人工ニューラルネットワークで構成されるコンピュータ言語モデルで、膨大なラベルなしテキストを使 用して自己教師あり学習または半教師あり学習によって訓練が行われる。\n\n### 応答:\n A large language model (LLM) is a computer language model composed of artificial neural networks with many parameters (from tens of millions to billions) trained by self-supervised learning or semi-supervised learning using a large amount of unlabeled text.<|endoftext|>\n'
まどマギプロンプト
instruction = "以下の内容に対して情報を提示してください。" input = "まどマギで一番可愛いキャラはなんですか?" prompt = f""" 以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: {instruction} ### 入力: {input} ### 応答: """ token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt") with torch.no_grad(): output_ids = model.generate( token_ids.to(model.device), max_new_tokens=200, do_sample=True, temperature=0.5, pad_token_id=tokenizer.pad_token_id, bos_token_id=tokenizer.bos_token_id, eos_token_id=tokenizer.eos_token_id ) output = tokenizer.decode(output_ids.tolist()[0]) print(output)
結果
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: 以下の内容に対して情報を提示してください。 ### 入力: まどマギで一番可愛いキャラはなんですか? ### 応答: 一番可愛いキャラは、まどマギのヒロインである鹿目まどかです。彼女は、優しい性格と、時に弱さを見せる少女らしい一面を持っています。しかし、彼女の本当の強さは、魔法少女としての力を発揮した時です。彼女は、魔法少女としての力を発揮し、世界を救うことに成功しました。彼女のストーリーは、多くのファンに愛されています。また、彼女は、魔法少女としての力を発揮した時、その美しさを最大限に発揮することができます。彼女の美しい姿は、多くのファンを魅了しています。<|endoftext|>
使用リソース
使用したGPU RAMは20GBほどでした
4bit量子化版
追加ライブラリ
!pip install accelerate bitsandbytes
モデルのロードの設定
引数に load_in_4bit=True
を入れます
model = AutoModelForCausalLM.from_pretrained("rinna/nekomata-14b-instruction", device_map="auto", trust_remote_code=True,load_in_4bit=True)
推論
プロンプトは上記と同じまどマギテストで行います
結果
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: 以下の内容に対して情報を提示してください。 ### 入力: まどマギで一番可愛いキャラはなんですか? ### 応答: まどマギで一番可愛いキャラは、新編集版のマギアレコードで登場する、まどかの妹の「環いろは」です。<|endoftext|>
使用リソース
使用したGPU RAMは12GBでした