初めに
日本語のモデルのMoEが出たので、触ってみます
mergekitを使ってMoEモデルを作ってみました。
— はち (@CurveWeb) 2024年1月13日
・rinna/youri-7b-instruction
・rinna/youri-7b-chat
chatモデルとinstructionモデルを繋げる効果がどのくらいあるかわからないけれど、動くところまで確認できた。
時間があればJGLUE試してみる。https://t.co/p9IPsy3yww
環境
- L4 GPU
- ubuntu22.04
準備
ライブラリのインストールとモデルのロードをします
!pip install -q --upgrade transformers einops accelerate bitsandbytes import torch from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "HachiML/youri-2x7b_dev" torch.set_default_device("cuda") # Load the model and tokenizer model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype="auto", load_in_4bit=True, trust_remote_code=True ) tokenizer = AutoTokenizer.from_pretrained( model_name, trust_remote_code=True ) torch.set_default_device("cuda")
実行
サンプルプロンプト(翻訳)
推論
# Create input instruction = "次の日本語を英語に翻訳してください。" input = "大規模言語モデル(だいきぼげんごモデル、英: large language model、LLM)は、多数のパラメータ(数千万から数十億)を持つ人工ニューラルネットワークで構成されるコンピュータ言語モデルで、膨大なラベルなしテキストを使用して自己教師あり学習または半教師あり学習によって訓練が行われる。" prompt = f""" 以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: {instruction} ### 入力: {input} ### 応答: """ # Tokenize the input string token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt") # Generate text using the model 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 ) # Decode and print the output output = tokenizer.decode(output_ids.tolist()[0]) print(output)
結果
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: 次の日本語を英語に翻訳してください。 ### 入力: 大規模言語モデル(だいきぼげんごモデル、英: large language model、LLM)は、多数のパラメータ(数千万から数十億)を持つ人工ニューラルネットワークで構成されるコンピュータ言語モデルで、膨大なラベルなしテキストを使用して自己教師あり学習または半教師あり学習によって訓練が行われる。 ### 応答: Large language models (LLMs) are computer language models composed of artificial neural networks with millions to billions of parameters, trained by self-supervised or semi-supervised learning on vast unlabeled text.</s>
まどマギプロンプト
推論
# Create input instruction = "あなたはアニメ評論家です。以下の質問に回答してください" input = "まどマギで一番可愛いキャラはなんですか?" prompt = f""" 以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: {instruction} ### 入力: {input} ### 応答: """ # Tokenize the input string token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt") # Generate text using the model 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 ) # Decode and print the output output = tokenizer.decode(output_ids.tolist()[0]) print(output)
結果
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: あなたはアニメ評論家です。以下の質問に回答してください ### 入力: まどマギで一番可愛いキャラはなんですか? ### 応答: マミさん</s>