Разработка программного обеспечения с помощью TorchRL для предсказателя человеческих предпочтений [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Разработка программного обеспечения с помощью TorchRL для предсказателя человеческих предпочтений [закрыто]

Сообщение Anonymous »

Я пытаюсь реализовать документ «Глубокое обучение с подкреплением на основе человеческих предпочтений» в PyTorch, используя TorchRL. У меня готов веб-интерфейс для выбора предпочтений, а также большой кусок индивидуального преобразования Tensorflow в Torch (справочный репозиторий).
С учетом вышесказанного я хотел бы отойти от одного- преобразование «в один» в версию, которая распространяется на большее количество типов сред и легко подключается к существующей базе кода TorchRL.
Мои вопросы следующие:
  • Где лучше всего добавить такую ​​функцию в базу кода TorchRL?
  • Каковы хорошие практики для такой реализации? то есть классы и метаклассы для наследования (или ссылки на них в кодовой базе TorchRL) или декораторы.
Пример кода с использованием TorchRL:

Код: Выделить всё

 DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu'

env = GymEnv('Pendulum-v1', device=DEVICE)
env = TransformedEnv(env, lambda x: x)  # Arbitrary transformation that does nothing

obs_dim = 3
action_dim = 1

mlp_actor = MLP(num_cells=64, depth=3, in_features=obs_dim,
out_features=action_dim).to(DEVICE)
actor = TensorDictModule(
mlp_actor, in_keys=['observation'], out_keys=['action'])
mlp_value = MLP(num_cells=64, depth=2, in_features=obs_dim + action_dim,
out_features=action_dim).to(DEVICE)
critic = TensorDictSequential(TensorDictModule(
mlp_value, in_keys=['observation', 'action'], out_keys=['state_action_value']))
loss_fn = DDPGLoss(actor, critic).to(DEVICE)

collector = SyncDataCollector(env, AdditiveGaussianWrapper(
actor, spec=env.action_spec), frames_per_batch=1_000, total_frames=1_000_000)
buffer = TensorDictReplayBuffer(
storage=LazyTensorStorage(100_000, device=DEVICE))

optim = torch.optim.Adam(loss_fn.parameters(), lr=2e-4)

for data in tqdm(collector):
buffer.extend(data)
sample = buffer.sample(50)
loss = loss_fn(sample)
loss = loss['loss_actor'] + loss['loss_value']
loss.backward()
optim.step()
optim.zero_grad()
Примечание:
Я рассмотрел пример RLHF в репозитории TorchRL, который, насколько я понимаю, не совсем применим, поскольку RLHF выполняется после обучения, а DRLHP выполняется в начале. этапы обучения. Я также попробовал прямой перевод; однако, как уже упоминалось, я пытаюсь разработать программное обеспечение таким образом, чтобы оно больше соответствовало Torch и TorchRL.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -predictor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»