in lm_human_preferences/train_reward.py [0:0]
def train(hparams: HParams):
with tf.Graph().as_default():
hyperparams.dump(hparams)
utils.set_mpi_seed(hparams.run.seed)
m = trained_models.TrainedModel(hparams.task.policy.initial_model)
encoder = m.encoding.get_encoder()
hyperparams.dump(m.hparams(), name='model_hparams')
comm = MPI.COMM_WORLD
ref_policy = Policy(
m, scope='ref_policy',
is_root=comm.Get_rank() == 0,
embed_queries=lm_tasks.query_formatter(hparams.task, encoder),
temperature=hparams.task.policy.temperature,
build_respond=False)
reward_model = rewards.RewardModelTrainer(m, is_root=comm.Get_rank() == 0)
query_sampler = lm_tasks.make_query_sampler(
hparams=hparams.task, encoder=encoder, comm=comm,
batch_size=utils.exact_div(hparams.rollout_batch_size, comm.Get_size())
)
tf.train.create_global_step()
reward_trainer = RewardModelTrainer(
reward_model=reward_model,
policy=ref_policy,
query_sampler=query_sampler,
hparams=hparams,
comm=comm,
)
save_dir = hparams.run.save_dir
if comm.Get_rank() == 0 and save_dir:
print(f"Will save to {save_dir}")
saver = tf.train.Saver(max_to_keep=20, save_relative_paths=True)
checkpoint_dir = os.path.join(save_dir, 'reward_model/checkpoints/model.ckpt')
if not save_dir.startswith('gs://'):
os.makedirs(os.path.join(save_dir, 'reward_model'), exist_ok=True)
with tf.gfile.Open(os.path.join(save_dir, 'train_reward_hparams.json'), 'w') as f:
json.dump(hparams.to_nested_dict(), f, indent=2)
with tf.gfile.Open(os.path.join(save_dir, 'reward_model', 'hparams.json'), 'w') as f:
json.dump(reward_model.hparams.to_nested_dict(), f, indent=2)
with tf.gfile.Open(os.path.join(save_dir, 'reward_model', 'encoding'), 'w') as f:
json.dump(reward_model.trained_model.encoding.name, f, indent=2)
else:
saver = None
checkpoint_dir = None
with utils.variables_on_gpu():
init_ops = tf.group(
tf.global_variables_initializer(),
tf.local_variables_initializer(),
summary.summary_writer_initializer_op())
@utils.graph_function()
def sync_models():
return utils.variable_synchronizer(comm, vars=ref_policy.get_params() + reward_model.get_params())
tf.get_default_graph().finalize()
with utils.mpi_session() as sess:
init_ops.run()
sync_models()
reward_trainer.train()
if saver:
saver.save(sess, checkpoint_dir)