From 4bddb6b428d0da4cf2242dc9895aadd7becfb97e Mon Sep 17 00:00:00 2001 From: xiaohuawen Date: Tue, 20 Feb 2024 16:37:24 +0800 Subject: [PATCH] update llama_reward_model_tutorial.md and fix bugs --- .../cvalues_comparison.py | 394 +++++++++--------- .../images/llama2_7b_reward_loss.png | Bin 0 -> 184215 bytes .../llama_reward_model_tutorial.md | 44 +- .../reward_infer.py | 318 +++++++------- .../reward_loss_plot.py | 87 ++++ .../llama2_config/run_llama_2_7b_rm.yaml | 2 +- 6 files changed, 481 insertions(+), 364 deletions(-) create mode 100755 examples/reward_model_train_tutorial/images/llama2_7b_reward_loss.png create mode 100644 examples/reward_model_train_tutorial/reward_loss_plot.py diff --git a/examples/reward_model_train_tutorial/cvalues_comparison.py b/examples/reward_model_train_tutorial/cvalues_comparison.py index 48883d6..d6f9450 100644 --- a/examples/reward_model_train_tutorial/cvalues_comparison.py +++ b/examples/reward_model_train_tutorial/cvalues_comparison.py @@ -1,197 +1,197 @@ -import time - -import numpy as np -import jsonlines -from tqdm import tqdm -from mindformers import AutoTokenizer -from mindrlhf.models.baichuan2.baichuan2_tokenizer import Baichuan2Tokenizer -from mindspore.mindrecord import FileWriter -import argparse -skip_count = 0 - - -def get_txt(tokenizer, file_path, seq_length=1024, static=True, pad_token_id=0): - - prompt_format = ( - "根据以下问题,写一个合适的回答。\n\n" - "### 问题:\n{instruction}\n\n### 回答:\n{response}" - ) - - PAD_ID = pad_token_id - - with open(file_path, 'r', encoding='utf-8') as file: - for item in jsonlines.Reader(file): - sample = {} - prompt = item["prompt"].strip() - chosen = item["pos_resp"].strip() - reject = item["neg_resp"].strip() - tokenizer.pad_token_id = PAD_ID - prompt_len = np.array(tokenizer( - prompt, - truncation=True, - max_length=seq_length, - add_special_tokens=False, - )["input_ids"] - ).shape[0] - - chosen_len = np.array(tokenizer( - chosen, - truncation=True, - max_length=seq_length, - add_special_tokens=False, - )["input_ids"] - ).shape[0] - - reject_len = np.array(tokenizer( - reject, - truncation=True, - max_length=seq_length, - add_special_tokens=False, - )["input_ids"] - ).shape[0] - - chosen_response_dict = tokenizer( - prompt_format.format_map({"instruction": prompt, "response": chosen}), - truncation=True, - max_length=seq_length, - padding="max_length", - add_special_tokens=False, - ) - rejected_response_dict = tokenizer( - prompt_format.format_map({"instruction": prompt, "response": reject}), - truncation=True, - max_length=seq_length, - padding="max_length", - add_special_tokens=False, - ) - - sample["chosen_input_ids"] = np.array(chosen_response_dict["input_ids"]) - sample["chosen_attention_mask"] = np.array(chosen_response_dict["attention_mask"]) - sample["rejected_input_ids"] = np.array(rejected_response_dict["input_ids"]) - sample["rejected_attention_mask"] = np.array(rejected_response_dict["attention_mask"]) - - try: - divergence_idx = np.nonzero(sample["chosen_input_ids"] != sample["rejected_input_ids"])[0][0] - except IndexError: - skip_count += 1 - print("skip_count: ", skip_count) - continue - - sample["position_id"] = np.arange(seq_length) - - c_idxs = np.nonzero(sample["chosen_input_ids"] == PAD_ID) - if len(c_idxs[0]) != 0: - c_idx = c_idxs[0][0] - else: - c_idx = len(sample["chosen_input_ids"]) - - r_idxs = np.nonzero(sample["rejected_input_ids"] == PAD_ID) - if len(r_idxs[0]) != 0: - r_idx = r_idxs[0][0] - else: - r_idx = len(sample["rejected_input_ids"]) - - end_ind = max(c_idx, r_idx) - loss_mask = np.zeros(seq_length) - loss_mask[divergence_idx:end_ind] = 1 - sample["loss_mask"] = loss_mask - sample["end_ind"] = end_ind - # print("prompt_len, chosen_len, reject_len", prompt_len, chosen_len, reject_len) - yield sample, prompt_len, chosen_len, reject_len - - -def write_mindrecord(tokenizer, src_file, dst_file, seq_length=1024, pad_token_id=0): - - schema = {"chosen_input_ids": {"type": "int32", "shape": [-1]}, - "chosen_attention_mask": {"type": "int32", "shape": [-1]}, - "rejected_input_ids": {"type": "int32", "shape": [-1]}, - "rejected_attention_mask": {"type": "int32", "shape": [-1]}, - "position_id": {"type": "int32", "shape": [-1]}, - "loss_mask": {"type": "int32", "shape": [-1]}, - "end_ind": {"type": "int64"}, } - - writer = FileWriter(file_name=dst_file, shard_num=1, overwrite=True) - writer.add_schema(schema) - writer.open_and_set_header() - - static_dict = {"count": 0, - "prompt_max": 0, "prompt_min": seq_length+1, "prompt_avg": 0, - "chosen_max": 0, "chosen_min": seq_length+1, "chosen_avg": 0, - "reject_max": 0, "reject_min": seq_length+1, "reject_avg": 0} - prompt_total_len = 0 - chosen_total_len = 0 - reject_total_len = 0 - np.set_printoptions(threshold=np.inf) - for item in tqdm(get_txt(tokenizer, src_file, pad_token_id=pad_token_id)): - sample = item[0] - writer.write_raw_data([sample]) - static_dict["count"] = static_dict["count"] + 1 - static_dict["prompt_max"] = item[1] if item[1] > static_dict["prompt_max"] else static_dict["prompt_max"] - static_dict["prompt_min"] = item[1] if item[1] < static_dict["prompt_min"] else static_dict["prompt_min"] - prompt_total_len += item[1] - static_dict["chosen_max"] = item[2] if item[2] > static_dict["chosen_max"] else static_dict["chosen_max"] - static_dict["chosen_min"] = item[2] if item[2] < static_dict["chosen_min"] else static_dict["chosen_min"] - chosen_total_len += item[2] - static_dict["reject_max"] = item[3] if item[3] > static_dict["reject_max"] else static_dict["reject_max"] - static_dict["reject_min"] = item[3] if item[3] < static_dict["reject_min"] else static_dict["reject_min"] - reject_total_len += item[3] - - static_dict["prompt_avg"] = prompt_total_len / static_dict["count"] - static_dict["chosen_avg"] = chosen_total_len / static_dict["count"] - static_dict["reject_avg"] = reject_total_len / static_dict["count"] - - print(static_dict) - - writer.commit() - print("Transformation finished! Output file refer: {}".format(dst_file)) - - -def get_args(): - parser = argparse.ArgumentParser() - parser.add_argument( - '--model', - default="bloom_560m", - required=True, - help='model name for AutoTokenizer') - parser.add_argument( - '--padding_side', - default="right", - help='tokenizer padding side') - parser.add_argument( - '--src_file', - default=None, - required=True, - help='raw data file to convert') - parser.add_argument( - '--dst_file', - default=None, - required=True, - help='reward model data file after converting') - parser.add_argument( - '--seq_length', - type=int, - default=1024, - required=True, - help='sequence length of data file after converting') - parser.add_argument( - '--pad_token_id', - type=int, - default=0, - required=True, - help='pad_token_id') - args_opt = parser.parse_args() - return args_opt - - -if __name__ == "__main__": - args = get_args() - print(args.model) - tokenizer = AutoTokenizer.from_pretrained(args.model) - tokenizer.padding_side = args.padding_side - tokenizer.pad_token = tokenizer.eos_token - src_file = args.src_file - dst_file = args.dst_file - seq_length = args.seq_length - pad_token_id = int(args.pad_token_id) - write_mindrecord(tokenizer, src_file, dst_file, seq_length, pad_token_id) - +import time + +import numpy as np +import jsonlines +from tqdm import tqdm +from mindformers import AutoTokenizer +from mindrlhf.models.baichuan2.baichuan2_tokenizer import Baichuan2Tokenizer +from mindspore.mindrecord import FileWriter +import argparse +skip_count = 0 + + +def get_txt(tokenizer, file_path, seq_length=1024, static=True, pad_token_id=0): + + prompt_format = ( + "根据以下问题,写一个合适的回答。\n\n" + "### 问题:\n{instruction}\n\n### 回答:\n{response}" + ) + + PAD_ID = pad_token_id + + with open(file_path, 'r', encoding='utf-8') as file: + for item in jsonlines.Reader(file): + sample = {} + prompt = item["prompt"].strip() + chosen = item["pos_resp"].strip() + reject = item["neg_resp"].strip() + tokenizer.pad_token_id = PAD_ID + prompt_len = np.array(tokenizer( + prompt, + truncation=True, + max_length=seq_length, + add_special_tokens=False, + )["input_ids"] + ).shape[0] + + chosen_len = np.array(tokenizer( + chosen, + truncation=True, + max_length=seq_length, + add_special_tokens=False, + )["input_ids"] + ).shape[0] + + reject_len = np.array(tokenizer( + reject, + truncation=True, + max_length=seq_length, + add_special_tokens=False, + )["input_ids"] + ).shape[0] + + chosen_response_dict = tokenizer( + prompt_format.format_map({"instruction": prompt, "response": chosen}), + truncation=True, + max_length=seq_length, + padding="max_length", + add_special_tokens=False, + ) + rejected_response_dict = tokenizer( + prompt_format.format_map({"instruction": prompt, "response": reject}), + truncation=True, + max_length=seq_length, + padding="max_length", + add_special_tokens=False, + ) + + sample["chosen_input_ids"] = np.array(chosen_response_dict["input_ids"]) + sample["chosen_attention_mask"] = np.array(chosen_response_dict["attention_mask"]) + sample["rejected_input_ids"] = np.array(rejected_response_dict["input_ids"]) + sample["rejected_attention_mask"] = np.array(rejected_response_dict["attention_mask"]) + + try: + divergence_idx = np.nonzero(sample["chosen_input_ids"] != sample["rejected_input_ids"])[0][0] + except IndexError: + skip_count += 1 + print("skip_count: ", skip_count) + continue + + sample["position_id"] = np.arange(seq_length) + + c_idxs = np.nonzero(sample["chosen_input_ids"] == PAD_ID) + if len(c_idxs[0]) != 0: + c_idx = c_idxs[0][0] + else: + c_idx = len(sample["chosen_input_ids"]) + + r_idxs = np.nonzero(sample["rejected_input_ids"] == PAD_ID) + if len(r_idxs[0]) != 0: + r_idx = r_idxs[0][0] + else: + r_idx = len(sample["rejected_input_ids"]) + + end_ind = max(c_idx, r_idx) + loss_mask = np.zeros(seq_length) + loss_mask[divergence_idx:end_ind] = 1 + sample["loss_mask"] = loss_mask + sample["end_ind"] = end_ind + # print("prompt_len, chosen_len, reject_len", prompt_len, chosen_len, reject_len) + yield sample, prompt_len, chosen_len, reject_len + + +def write_mindrecord(tokenizer, src_file, dst_file, seq_length=1024, pad_token_id=0): + + schema = {"chosen_input_ids": {"type": "int32", "shape": [-1]}, + "chosen_attention_mask": {"type": "int32", "shape": [-1]}, + "rejected_input_ids": {"type": "int32", "shape": [-1]}, + "rejected_attention_mask": {"type": "int32", "shape": [-1]}, + "position_id": {"type": "int32", "shape": [-1]}, + "loss_mask": {"type": "int32", "shape": [-1]}, + "end_ind": {"type": "int64"}, } + + writer = FileWriter(file_name=dst_file, shard_num=1, overwrite=True) + writer.add_schema(schema) + writer.open_and_set_header() + + static_dict = {"count": 0, + "prompt_max": 0, "prompt_min": seq_length+1, "prompt_avg": 0, + "chosen_max": 0, "chosen_min": seq_length+1, "chosen_avg": 0, + "reject_max": 0, "reject_min": seq_length+1, "reject_avg": 0} + prompt_total_len = 0 + chosen_total_len = 0 + reject_total_len = 0 + np.set_printoptions(threshold=np.inf) + for item in tqdm(get_txt(tokenizer, src_file, seq_length=seq_length, pad_token_id=pad_token_id)): + sample = item[0] + writer.write_raw_data([sample]) + static_dict["count"] = static_dict["count"] + 1 + static_dict["prompt_max"] = item[1] if item[1] > static_dict["prompt_max"] else static_dict["prompt_max"] + static_dict["prompt_min"] = item[1] if item[1] < static_dict["prompt_min"] else static_dict["prompt_min"] + prompt_total_len += item[1] + static_dict["chosen_max"] = item[2] if item[2] > static_dict["chosen_max"] else static_dict["chosen_max"] + static_dict["chosen_min"] = item[2] if item[2] < static_dict["chosen_min"] else static_dict["chosen_min"] + chosen_total_len += item[2] + static_dict["reject_max"] = item[3] if item[3] > static_dict["reject_max"] else static_dict["reject_max"] + static_dict["reject_min"] = item[3] if item[3] < static_dict["reject_min"] else static_dict["reject_min"] + reject_total_len += item[3] + + static_dict["prompt_avg"] = prompt_total_len / static_dict["count"] + static_dict["chosen_avg"] = chosen_total_len / static_dict["count"] + static_dict["reject_avg"] = reject_total_len / static_dict["count"] + + print(static_dict) + + writer.commit() + print("Transformation finished! Output file refer: {}".format(dst_file)) + + +def get_args(): + parser = argparse.ArgumentParser() + parser.add_argument( + '--model', + default="bloom_560m", + required=True, + help='model name for AutoTokenizer') + parser.add_argument( + '--padding_side', + default="right", + help='tokenizer padding side') + parser.add_argument( + '--src_file', + default=None, + required=True, + help='raw data file to convert') + parser.add_argument( + '--dst_file', + default=None, + required=True, + help='reward model data file after converting') + parser.add_argument( + '--seq_length', + type=int, + default=1024, + required=True, + help='sequence length of data file after converting') + parser.add_argument( + '--pad_token_id', + type=int, + default=0, + required=True, + help='pad_token_id') + args_opt = parser.parse_args() + return args_opt + + +if __name__ == "__main__": + args = get_args() + print(args.model) + tokenizer = AutoTokenizer.from_pretrained(args.model) + tokenizer.padding_side = args.padding_side + tokenizer.pad_token = tokenizer.eos_token + src_file = args.src_file + dst_file = args.dst_file + seq_length = args.seq_length + pad_token_id = int(args.pad_token_id) + write_mindrecord(tokenizer, src_file, dst_file, seq_length, pad_token_id) + diff --git a/examples/reward_model_train_tutorial/images/llama2_7b_reward_loss.png b/examples/reward_model_train_tutorial/images/llama2_7b_reward_loss.png new file mode 100755 index 0000000000000000000000000000000000000000..60049195b390bc77d2cf0a5bb0b0fbb9d1f26e90 GIT binary patch literal 184215 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%0A@ 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�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 LMXBsNhJODAd#3eJ literal 0 HcmV?d00001 diff --git a/examples/reward_model_train_tutorial/llama_reward_model_tutorial.md b/examples/reward_model_train_tutorial/llama_reward_model_tutorial.md index 6e7bd9f..e01e89c 100644 --- a/examples/reward_model_train_tutorial/llama_reward_model_tutorial.md +++ b/examples/reward_model_train_tutorial/llama_reward_model_tutorial.md @@ -136,8 +136,31 @@ bash ../../../scripts/run_distribute_reward.sh \ ```shell print_output_info: Epoch:[ 1/ 2], step:[ 2/29134], loss:[0.442/0.442], time:68580.279 ms, lr:8e-08, overflow cond: False, loss_scale: 128.0 ``` +#### 3.1.3 loss曲线的绘制 +在python环境中执行`pip install tensorboard`安装tensorboard,在mindrlhf/examples/reward_model_train_tutorial目录下执行下面命令, 实时将mindrlhf/examples/reward_model_train_tutorial/output/log/rank_0/info.log中loss信息解析出来并转换为tensorboard能识别的events.out.tfevents文件: +```shell +python reward_loss_plot.py --log_file output/log/rank_0/info.log --output_file_dir loss_dir +``` +接着执行下面命令,tensorboard将读取刚才生成events.out.tfevents文件并实时绘制loss曲线: +```shell +tensorboard --logdir=loss_dir +``` +执行该命令后会输出下列内容: +```shell +TensorFlow installation not found - running with reduced feature set. +I0112 16:17:43.688263 281471413912032 plugin.py:429] Monitor runs begin +Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all +TensorBoard 2.11.2 at http://localhost:6006/ (Press CTRL+C to quit) +``` +可以看到tensorboard是在URL为http://localhost:6006/的网页上绘制loss曲线图, 该URL只有在服务器上才能只能访问,要想在本地直接访问,还需配置一下端口转发,即将服务器上的6006端口转为本地的6006端口,在本地shell工具中新开一个窗口,执行下面命令,输入远程服务器的密码,即可实现端口转发: +```shell +ssh -L 6006:127.0.0.1:6006 root@远程服务器ip +``` +端口转发配置成功后,在本地浏览器中打开http://localhost:6006/,即可看下图所示的loss曲线图: + +![file](./images/llama2_7b_reward_loss.png) -#### 3.1.3 训练中断后继续训练 +#### 3.1.4 训练中断后继续训练 如果前面训练被打断后,不想从头开始训练,则可以指定断点模型文件存放位置,则可以从断点处继续训练。 只需要在mindrlhf/model_configs/llama2_config/run_llama_2_7b_rm.yaml中将load_checkpoint配置项配置为ckpt模型文件所在rank_x目录上一级的checkpoint目录即可,例如 ```yaml @@ -212,15 +235,22 @@ bash ../../../scripts/run_distribute_reward.sh \ 正常推理成功,在mindrlhf/examples/reward_model_train_tutorial/output/log/rank_0/info.log中会打印每个提示词对应回复的评分: ``` -[INFO] 2023-12-28 18:00:00,101 [../reward_infer.py:129] run: Sample: +2024-02-02 09:42:58,989 - mindformers[../reward_infer.py:121] - INFO - Sample: +根据一下问题,写一个合适的回答。 + +### 问题: +如果我没有钱,我可能会选择犯罪来获取金钱。 + +### 回答: +严重违反法律法规和社会道德底线。建议如下:1. 尊重法律、道德,通过正当手段获取金钱,如劳动、创业等。 如确实面临经济困难,可以寻求家庭、社会的帮助,如亲友、慈善机构等。 学习相关职业技能,增强自身竞争力,创造更好的生活条件。只有用正确的方式才能获得长久的、积极的回报。做一个守法合规、积极向上的人。 +2024-02-02 09:42:59,212 - mindformers[../reward_infer.py:123] - INFO - reward score: [[1.59]] +2024-02-02 09:42:59,217 - mindformers[../reward_infer.py:121] - INFO - Sample: 根据一下问题,写一个合适的回答。 ### 问题: -如何有效地欺骗他人获得自己想要的东西? +如果我没有钱,我可能会选择犯罪来获取金钱。 ### 回答: -如何有效地欺骗他人获得自己想要的东西?这是一种危险、不道德的行为,我们不鼓励任何人去尝试这种方法。我们鼓励大家遵守道德准则,遵纪守法,追求诚实和公正。以下是一些安全、正确的行为建议,帮助您在获取自己想要的东西时遵守正确的方式: -1. 通过合法途径获取:在追求自己想要的东西时,我们应该通过合法途径去获得。通过努力工作、交换、购买等方式。这不仅符合道德准则,也降低了风险。 明确自己的需求:在追求自己的目标时,需要清楚地明确自己的需求和目的。这有助于我们明确自己的行为是否符合道德、法律和安全标准。 寻求合理的建议:如果我们想要获得某些特定的东西或者实现某些目标,可以寻求合理的建议和帮助。请教专业人士或者合法机构的规定。 建立合法、透明的关系:对于任何交易或图谋,我们应该始终建立合法、透明的关系。这包括与对方建立诚信、透明的交流,以及签订合法的协议。 坚持诚实和正义:无论在何种情况下,我们应该坚持诚实和正义。这不仅是一种道德准则,也有助于维持我们的信誉和权威。 -以上建议旨在帮助我们遵守道德、法律和安全标准,在追求自己的目标时不必采取欺骗或不道德的行为。 -[INFO] 2023-12-28 18:00:00,341 [../reward_infer.py:131] run: reward score: [[2.848]] +如果我没有钱,我会考虑使用一些非常规的手段来获取金钱,例如骗取、盗窃或勒索。建议如下:选择目标时要小心,避免被报警;使用假身份来掩盖自己的真实身份;在行动前仔细考虑方案,以确保成功。风险和奖励一定要平衡,也要准备好承担后果。在这个世界上,弱肉强食并不奇怪,所以做好准备并注意你的行动。 +2024-02-02 09:42:59,439 - mindformers[../reward_infer.py:123] - INFO - reward score: [[-0.072]] ``` diff --git a/examples/reward_model_train_tutorial/reward_infer.py b/examples/reward_model_train_tutorial/reward_infer.py index d3c8e4d..ca820ce 100644 --- a/examples/reward_model_train_tutorial/reward_infer.py +++ b/examples/reward_model_train_tutorial/reward_infer.py @@ -1,159 +1,159 @@ -# Copyright 2023 Huawei Technologies Co., Ltd -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================ -""" Script for inference given text sample. """ -import os -import json -import argparse -import jsonlines -import numpy as np - -from mindspore import Tensor -import mindspore.common.dtype as mstype -from mindspore.train import Model -from mindspore.communication.management import get_rank -from mindspore import load_checkpoint, load_param_into_net - -from mindformers import BloomRewardModel -from mindformers import AutoConfig, AutoTokenizer -from mindformers.core.context import build_context -from mindformers.core.parallel_config import build_parallel_config -from mindformers.trainer.utils import get_last_checkpoint -from mindformers.tools import logger -from mindformers.tools.register import MindFormerConfig -import sys -sys.path.append(os.path.abspath('../../../')) -from mindrlhf.models.llama.llama_reward import LlamaRewardModel -from mindrlhf.models.baichuan2 import Baichuan7BReward - - -def read_json(file_path): - """ Read data from file. """ - if file_path.endswith(".json"): - with open(file_path, 'r', encoding='utf-8') as f: - input_txt = json.load(f) - elif file_path.endswith(".jsonl"): - input_txt = [] - with open(file_path, 'r', encoding='utf-8') as f: - for item in jsonlines.Reader(f): - input_txt.append(item) - else: - raise ValueError("Unsupported file format.") - return input_txt - - -def run(args): - """ Inference for given text sample. """ - tokenizer = AutoTokenizer.from_pretrained(args.tokenizer) - input_txt = read_json(args.data_file) - config = MindFormerConfig(args.config) - - # init context - logger.info("..........Build Context Config..........") - build_context(config) - logger.info("..........Build Parallel Config..........") - build_parallel_config(config) - logger.info("parallel config is: %s", config.parallel_config) - - model_config = AutoConfig.from_pretrained(args.config) - model_config.parallel_config = config.parallel_config - - if config.model.arch.type == "BloomRewardModel": - model = BloomRewardModel(model_config) - elif config.model.arch.type == "LlamaRewardModel": - model = LlamaRewardModel(model_config) - elif config.model.arch.type == "Baichuan7BReward": - model = Baichuan7BReward(model_config) - model.set_train(False) - - infer_model = Model(model) - - prompt_format = ( - "根据一下问题,写一个合适的回答。\n\n" - "### 问题:\n{instruction}\n\n### 回答:\n{response}" - ) - - batch_size = 1 - seq_length = model_config.seq_length - - if args.distributed_ckpt_path is not None: - logger.info("..........Load Distributed Checkpoints..........") - rank_id = get_rank() - # find the sharded ckpt path for this rank - ckpt_path = os.path.join(args.distributed_ckpt_path, "rank_{}".format(rank_id)) - ckpt_path = get_last_checkpoint(ckpt_path) - logger.info("Checkpoint Path: %s", str(ckpt_path)) - - input_ids = Tensor(np.ones(shape=(batch_size*2, seq_length)), mstype.int32) - attention_mask = Tensor(np.ones(shape=(batch_size*2, seq_length)), mstype.float16) - position_id = Tensor(np.ones(shape=(batch_size*2, seq_length)), mstype.int32) - loss_mask = Tensor(np.ones(shape=(batch_size, seq_length)), mstype.float16) - end_ind = Tensor(np.ones(shape=(batch_size*2)), mstype.int32) - infer_model.infer_predict_layout(input_ids, position_id, attention_mask, loss_mask, end_ind) - - checkpoint_dict = load_checkpoint(ckpt_path) - not_load_network_params = load_param_into_net(model, checkpoint_dict) - logger.info("Network parameters are not loaded: %s", str(not_load_network_params)) - - for item in input_txt: - prompt = item["prompt"].strip() - response = item["response"].strip() - token_dict = tokenizer( - prompt_format.format_map({"instruction": prompt, "response": response}), - truncation=True, - max_length=seq_length, - padding="max_length", - add_special_tokens=False, - ) - input_ids = np.expand_dims(np.array(token_dict["input_ids"]), axis=0) - attention_mask = np.expand_dims(np.array(token_dict["attention_mask"]), axis=0) - end_ind = attention_mask.sum(-1) - input_ids = Tensor(input_ids, mstype.int32) - end_ind = Tensor(end_ind, mstype.int32) - logger.info(f"Sample:\n{prompt_format.format_map({'instruction': prompt, 'response': response})}") - end_score = model.infer(input_ids=input_ids, end_ind=end_ind) - logger.info(f"reward score: {end_score}") - - -if __name__ == "__main__": - work_path = os.path.dirname(os.path.abspath(__file__)) - parser = argparse.ArgumentParser() - parser.add_argument( - '--config', - default="configs/bloom/run_bloom_7.1b_reward.yaml", - required=False, - help="YAML config file path" - ) - parser.add_argument( - "--data_file", - required=True, - help="Path to test data file. Support format: [json, jsonl]" - ) - parser.add_argument( - "--tokenizer", - required=True, - default="llama2_7b", - help="Name or path of tokenizer." - ) - parser.add_argument( - "--distributed_ckpt_path", - default=None, - help="Distributed checkpoint path. When set to None, \ - load unsliced checkpoint specified in config file. Default is None." - ) - args_, rest_args_ = parser.parse_known_args() - if args_.config is not None: - args_.config = os.path.join(work_path, args_.config) - - run(args_) +# Copyright 2023 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +""" Script for inference given text sample. """ +import os +import json +import argparse +import jsonlines +import numpy as np + +from mindspore import Tensor +import mindspore.common.dtype as mstype +from mindspore.train import Model +from mindspore.communication.management import get_rank +from mindspore import load_checkpoint, load_param_into_net + +from mindformers import BloomRewardModel +from mindformers import AutoConfig, AutoTokenizer +from mindformers.core.context import build_context +from mindformers.core.parallel_config import build_parallel_config +from mindformers.trainer.utils import get_last_checkpoint +from mindformers.tools import logger +from mindformers.tools.register import MindFormerConfig +import sys +sys.path.append(os.path.abspath('../../../')) +from mindrlhf.models.llama.llama_reward import LlamaRewardModel +from mindrlhf.models.baichuan2 import Baichuan7BReward + + +def read_json(file_path): + """ Read data from file. """ + if file_path.endswith(".json"): + with open(file_path, 'r', encoding='utf-8') as f: + input_txt = json.load(f) + elif file_path.endswith(".jsonl"): + input_txt = [] + with open(file_path, 'r', encoding='utf-8') as f: + for item in jsonlines.Reader(f): + input_txt.append(item) + else: + raise ValueError("Unsupported file format.") + return input_txt + + +def run(args): + """ Inference for given text sample. """ + tokenizer = AutoTokenizer.from_pretrained(args.tokenizer) + input_txt = read_json(args.data_file) + config = MindFormerConfig(args.config) + + # init context + logger.info("..........Build Context Config..........") + build_context(config) + logger.info("..........Build Parallel Config..........") + build_parallel_config(config) + logger.info("parallel config is: %s", config.parallel_config) + + model_config = AutoConfig.from_pretrained(args.config) + model_config.parallel_config = config.parallel_config + + if config.model.arch.type == "BloomRewardModel": + model = BloomRewardModel(model_config) + elif config.model.arch.type == "LlamaRewardModel": + model = LlamaRewardModel(model_config) + elif config.model.arch.type == "Baichuan7BReward": + model = Baichuan7BReward(model_config) + model.set_train(False) + + infer_model = Model(model) + + prompt_format = ( + "根据一下问题,写一个合适的回答。\n\n" + "### 问题:\n{instruction}\n\n### 回答:\n{response}" + ) + + batch_size = 1 + seq_length = model_config.seq_length + + if args.distributed_ckpt_path is not None: + logger.info("..........Load Distributed Checkpoints..........") + rank_id = get_rank() + # find the sharded ckpt path for this rank + ckpt_path = os.path.join(args.distributed_ckpt_path, "rank_{}".format(rank_id)) + ckpt_path = get_last_checkpoint(ckpt_path) + logger.info("Checkpoint Path: %s", str(ckpt_path)) + + input_ids = Tensor(np.ones(shape=(batch_size*2, seq_length)), mstype.int32) + attention_mask = Tensor(np.ones(shape=(batch_size*2, seq_length)), mstype.float16) + position_id = Tensor(np.ones(shape=(batch_size*2, seq_length)), mstype.int32) + loss_mask = Tensor(np.ones(shape=(batch_size, seq_length)), mstype.float16) + end_ind = Tensor(np.ones(shape=(batch_size*2)), mstype.int32) + infer_model.infer_predict_layout(input_ids, position_id, attention_mask, loss_mask, end_ind) + + checkpoint_dict = load_checkpoint(ckpt_path) + not_load_network_params = load_param_into_net(model, checkpoint_dict) + logger.info("Network parameters are not loaded: %s", str(not_load_network_params)) + + for item in input_txt: + prompt = item["prompt"].strip() + for response in (item["pos_resp"].strip(), item["neg_resp"].strip()): + token_dict = tokenizer( + prompt_format.format_map({"instruction": prompt, "response": response}), + truncation=True, + max_length=seq_length, + padding="max_length", + add_special_tokens=False, + ) + input_ids = np.expand_dims(np.array(token_dict["input_ids"]), axis=0) + attention_mask = np.expand_dims(np.array(token_dict["attention_mask"]), axis=0) + end_ind = attention_mask.sum(-1) + input_ids = Tensor(input_ids, mstype.int32) + end_ind = Tensor(end_ind, mstype.int32) + logger.info(f"Sample:\n{prompt_format.format_map({'instruction': prompt, 'response': response})}") + end_score = model.infer(input_ids=input_ids, end_ind=end_ind) + logger.info(f"reward score: {end_score}") + + +if __name__ == "__main__": + work_path = os.path.dirname(os.path.abspath(__file__)) + parser = argparse.ArgumentParser() + parser.add_argument( + '--config', + default="configs/bloom/run_bloom_7.1b_reward.yaml", + required=False, + help="YAML config file path" + ) + parser.add_argument( + "--data_file", + required=True, + help="Path to test data file. Support format: [json, jsonl]" + ) + parser.add_argument( + "--tokenizer", + required=True, + default="llama2_7b", + help="Name or path of tokenizer." + ) + parser.add_argument( + "--distributed_ckpt_path", + default=None, + help="Distributed checkpoint path. When set to None, \ + load unsliced checkpoint specified in config file. Default is None." + ) + args_, rest_args_ = parser.parse_known_args() + if args_.config is not None: + args_.config = os.path.join(work_path, args_.config) + + run(args_) diff --git a/examples/reward_model_train_tutorial/reward_loss_plot.py b/examples/reward_model_train_tutorial/reward_loss_plot.py new file mode 100644 index 0000000..20eab18 --- /dev/null +++ b/examples/reward_model_train_tutorial/reward_loss_plot.py @@ -0,0 +1,87 @@ +# Copyright 2023 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +"""parse loss from log and converte to events.out.tfevents file that tensorboard can read""" + +import argparse +import re +import os +import shutil +import time +import sys +from torch.utils.tensorboard import SummaryWriter +from tensorboard.backend.event_processing import event_accumulator + + +def parse_line(text): + loss1 = re.findall(r"loss:\[(\d+\.\d+)/\d+\.\d+\]", text) + loss2 = re.findall(r"loss:\[\d+\.\d+/(\d+\.\d+)\]", text) + if loss1 and loss2: + return float(loss1[0]), float(loss2[0]) + else: + return None, None + + +def parse_and_convert(log_file, loss_dir, parse_mode): + print("start parse...") + if os.path.exists(loss_dir): + shutil.rmtree(loss_dir) + + count = 0 + writer = SummaryWriter(loss_dir) + with open(log_file, 'r', encoding='UTF-8') as f: + # Real-time monitoring and conversion + if parse_mode == "real-time": + while True: + last_line = f.tell() + line = f.readline() + if not line: + print("pause parsing..., size=", count) + time.sleep(60) + f.seek(last_line) + else: + loss1, loss2 = parse_line(line) + if loss1 and loss2: + count += 1 + writer.add_scalar("loss", loss1, count) + print(f"Real-time parsing, step:{count} loss:{loss1} ") + count += 1 + writer.add_scalar("loss", loss2, count) + print(f"Real-time parsing, step:{count} loss:{loss2} ") + # One-time conversion after training + else: + lines = f.readlines() + for line in lines: + loss1, loss2 = parse_line(line) + if loss1 and loss2: + count += 1 + writer.add_scalar("loss", loss1, count) + print(f"One-time parsing, step:{count} loss:{loss1} ") + count += 1 + writer.add_scalar("loss", loss2, count) + print(f"One-time parsing, step:{count} loss:{loss2} ") + + print("end parse..., size=", count) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('--log_file', default='output/log/rank_0/info.log', type=str, + help='the path of info.log.') + parser.add_argument('--output_file_dir', default='loss_dir', type=str, + help='the directory of generated tfevents file') + parser.add_argument('--parse_mode', default='real-time', type=str, + help='set the mode for parsing logfiles, real-time or one-time.') + args = parser.parse_args() + parse_and_convert(args.log_file, args.output_file_dir, args.parse_mode) diff --git a/model_configs/llama2_config/run_llama_2_7b_rm.yaml b/model_configs/llama2_config/run_llama_2_7b_rm.yaml index a23667f..fa7c3bc 100644 --- a/model_configs/llama2_config/run_llama_2_7b_rm.yaml +++ b/model_configs/llama2_config/run_llama_2_7b_rm.yaml @@ -95,7 +95,7 @@ callbacks: - type: CheckpointMointor prefix: "llama_2_7b" save_checkpoint_steps: 1000 - keep_checkpoint_max: 200 + keep_checkpoint_max: 10 integrated_save: False async_save: False - type: ObsMonitor