From 1b6462991bd1316469c3ef01bc6f6f7e55cb10ea Mon Sep 17 00:00:00 2001 From: wassname Date: Thu, 16 Nov 2023 17:17:57 +0800 Subject: [PATCH] smaller horizon, smaller lstm. 100x faster actor_critic. does it learn though? --- config/trainer.yaml | 4 ++-- config/world_model/default.yaml | 2 +- img/2023-11-16-13-01-11.png | Bin 0 -> 85598 bytes research_journal.md | 36 ++++++++++++++++++++++++++++++++ src/envs/world_model_env.py | 3 +-- src/models/actor_critic.py | 13 ++++++------ src/trainer.py | 1 + 7 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 img/2023-11-16-13-01-11.png diff --git a/config/trainer.yaml b/config/trainer.yaml index 81f5e88..f8022a0 100644 --- a/config/trainer.yaml +++ b/config/trainer.yaml @@ -54,7 +54,7 @@ training: should: True learning_rate: 0.0001 tokenizer: - batch_num_samples: 32 + batch_num_samples: 128 grad_acc_steps: 1 max_grad_norm: 10.0 start_after_epochs: 5 @@ -71,7 +71,7 @@ training: grad_acc_steps: 1 max_grad_norm: 10.0 start_after_epochs: 50 - steps_per_epoch: 200 + steps_per_epoch: 20 imagine_horizon: ${common.sequence_length} burn_in: 20 gamma: 0.995 diff --git a/config/world_model/default.yaml b/config/world_model/default.yaml index cb9fcd3..16769b7 100644 --- a/config/world_model/default.yaml +++ b/config/world_model/default.yaml @@ -1,6 +1,6 @@ _target_: models.TransformerConfig tokens_per_block: 17 -max_blocks: 20 +max_blocks: 10 attention: 'causal' num_layers: 10 num_heads: 4 diff --git a/img/2023-11-16-13-01-11.png b/img/2023-11-16-13-01-11.png new file mode 100644 index 0000000000000000000000000000000000000000..00f3a5769a0b290f0373ff42aadc12f001e72cc4 GIT binary patch literal 85598 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�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 literal 0 HcmV?d00001 diff --git a/research_journal.md b/research_journal.md index bfd295d..de33a90 100644 --- a/research_journal.md +++ b/research_journal.md @@ -163,3 +163,39 @@ hm maybe it's just the face it has to backprop throguh the whole LLM :( damn... well running eval on the transformer brought it down from 100sec to 60, but it's still huge. But then why is the model training fast? It makes not sense + +# 2023-11-16 12:54:48 + +Why is agent so slow? Lets find out +- look at diagram +- look at train_agent + - to tokenizer.compute_loss is just tokenizer + - world_model.compute_loss user tokenizer with no grad + - actor_critic? takes an hour!! + - imagine (with grad?) + - x20 = horizon + - self(obs) + - WorldModelEnv.step this has no grad! + - transformer + - tokenizer with no grad + - compute_lambda_returns with no grad + + +So changes: +- the world model step always had no grad! +- I just made the lstm smaller and the horizon smaller +- from 1h to 3m. Reasonable. + + +Experiment: +- try no grad on the model? ok it now takes 20 minutes to train... still slow +with a smaller lstm and only 10 steos ut tajes 8 mins, + +![](img/2023-11-16-13-01-11.png) + +Experience collection (train_dataset): 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 200/200 [00:05<00:00, 36.11it/s] +Training tokenizer: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 200/200 [00:55<00:00, 3.61it/s] +Training world_model: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 200/200 [01:12<00:00, 2.76it/s] +Training tokenizer: 55sec +Training world_model 72 sec +train actor_critic 3min. It looks like it scales with lstm size! diff --git a/src/envs/world_model_env.py b/src/envs/world_model_env.py index 6188d2c..73e3852 100644 --- a/src/envs/world_model_env.py +++ b/src/envs/world_model_env.py @@ -65,13 +65,12 @@ class WorldModelEnv: token = action.clone().detach() if isinstance(action, torch.Tensor) else torch.tensor(action, dtype=torch.long) token = token.reshape(-1, 1).to(self.device) # (B, 1) + for k in range(num_passes): # assumption that there is only one action token. outputs_wm = self.world_model(token, past_keys_values=self.keys_values_wm) output_sequence.append(outputs_wm.output_sequence) - - # if outputs_wm.logits_rewards.shape[1] > 0: if k == 0: reward = Categorical(logits=outputs_wm.logits_rewards).sample().float().cpu().numpy().reshape(-1) - 1 # (B,) done = Categorical(logits=outputs_wm.logits_ends).sample().cpu().numpy().astype(bool).reshape(-1) # (B,) diff --git a/src/models/actor_critic.py b/src/models/actor_critic.py index 69dc3de..0fff2b6 100644 --- a/src/models/actor_critic.py +++ b/src/models/actor_critic.py @@ -36,6 +36,7 @@ class ImagineOutput: class ActorCritic(nn.Module): def __init__(self, act_vocab_size, use_original_obs: bool = False) -> None: super().__init__() + shrink = 4 self.use_original_obs = use_original_obs self.conv1 = nn.Conv2d(3, 32, 3, stride=1, padding=1) self.maxp1 = nn.MaxPool2d(2, 2) @@ -43,15 +44,15 @@ class ActorCritic(nn.Module): self.maxp2 = nn.MaxPool2d(2, 2) self.conv3 = nn.Conv2d(32, 64, 3, stride=1, padding=1) self.maxp3 = nn.MaxPool2d(2, 2) - self.conv4 = nn.Conv2d(64, 64, 3, stride=1, padding=1) + self.conv4 = nn.Conv2d(64, 64//shrink, 3, stride=1, padding=1) self.maxp4 = nn.MaxPool2d(2, 2) - self.lstm_dim = 512 - self.lstm = nn.LSTMCell(1024, self.lstm_dim) + self.lstm_dim = 64 + self.lstm = nn.LSTMCell(1024//shrink, self.lstm_dim) self.hx, self.cx = None, None - self.critic_linear = nn.Linear(512, 1) - self.actor_linear = nn.Linear(512, act_vocab_size) + self.critic_linear = nn.Linear(self.lstm_dim, 1) + self.actor_linear = nn.Linear(self.lstm_dim, act_vocab_size) def __repr__(self) -> str: return "actor_critic" @@ -85,7 +86,7 @@ class ActorCritic(nn.Module): x = F.relu(self.maxp2(self.conv2(x))) x = F.relu(self.maxp3(self.conv3(x))) x = F.relu(self.maxp4(self.conv4(x))) - x = torch.flatten(x, start_dim=1) + x = torch.flatten(x, start_dim=1) # [b=32, 64//shrink, 4, 4] if mask_padding is None: self.hx, self.cx = self.lstm(x, (self.hx, self.cx)) diff --git a/src/trainer.py b/src/trainer.py index ec94572..8b53aa5 100644 --- a/src/trainer.py +++ b/src/trainer.py @@ -169,6 +169,7 @@ class Trainer: if max_grad_norm is not None: torch.nn.utils.clip_grad_norm_(component.parameters(), max_grad_norm) + optimizer.step() metrics = {f'{str(component)}/train/total_loss': loss_total_epoch, **intermediate_losses}