From 2ab98583754f5a5f86e40c5207fc2df0bce094b0 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Mon, 22 Apr 2024 09:33:37 +0000 Subject: [PATCH 01/43] add retrieving memory --- src/nanotron/models/attention.py | 109 +++++++++++++++++++++++++++++++ src/nanotron/models/llama.py | 15 ++++- tests/test_attention.py | 28 ++++++++ 3 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 src/nanotron/models/attention.py create mode 100644 tests/test_attention.py diff --git a/src/nanotron/models/attention.py b/src/nanotron/models/attention.py new file mode 100644 index 00000000..2244e030 --- /dev/null +++ b/src/nanotron/models/attention.py @@ -0,0 +1,109 @@ +from typing import Optional + +import torch +import torch.distributed as dist +import torch.nn.functional as F +from einops import einsum, rearrange, reduce +from torch import nn + +# from jaxtyping import Float, Array +from torchtyping import TensorType + +from nanotron.config import LlamaConfig, ParallelismArgs + + +class InfiniAttention(nn.Module): + def __init__( + self, config: LlamaConfig, parallel_config: Optional[ParallelismArgs], tp_pg: dist.ProcessGroup, layer_idx: int + ): + super().__init__() + + + from nanotron.models.llama import CausalSelfAttention + + self.attn = CausalSelfAttention( + config=config, + parallel_config=parallel_config, + tp_pg=tp_pg, + layer_idx=layer_idx, + ) + + def forward( + self, + hidden_states: TensorType["seq_length", "batch_size", "hidden_size"], + sequence_mask: TensorType["batch_size", "seq_length"], + ): + attn_outputs = self.attn(hidden_states=hidden_states, sequence_mask=sequence_mask, return_qkv_states=True) + + attn_outputs["hidden_states"] + + # NOTE: query_states.shape = [batch_size * q_length, self.n_heads, d_qk] + # NOTE: key_states.shape or value_states.shape = [batch_size * kv_length, self.n_heads, d_qk] + query_states, key_states, value_states = attn_outputs["qkv_states"] + query_states.shape[-1] + query_states.shape[-2] + batch_size = hidden_states.shape[1] + + query_states = rearrange( + query_states, + "(batch_size seq_length) n_heads d_head -> batch_size n_heads seq_length d_head", + batch_size=batch_size, + ) + key_states = rearrange( + key_states, + "(batch_size seq_length) n_heads d_head -> batch_size n_heads seq_length d_head", + batch_size=batch_size, + ) + value_states = rearrange( + value_states, + "(batch_size seq_length) n_heads d_head -> batch_size n_heads seq_length d_head", + batch_size=batch_size, + ) + + # query_states = query_states.view(batch_size, -1, n_heads, d_head) # [batch_size, q_length, n_heads, d_qk] + # key_states = key_states.view(batch_size, -1, n_heads, d_head) + # value_states = value_states.view(batch_size, -1, n_heads, d_head) + + # memory = torch.matmul(key_states, value_states.transpose(-1, -2)) + # normalization = key_states.sum(dim=-1, keepdim=True) + + # memory = einsum(key_states, value_states, 'b n h d, b n h d -> b h d d') + # memory = einsum(key_states, value_states, 'b i j h, b i l h -> b i j l') + + # memory = einsum(F.elu(key_states) + 1, value_states, 'batch_size k_length n_heads d_head, batch_size v_length n_heads d_head -> batch_size n_heads k_length v_length') + # normalization = reduce(key_states, 'batch_size seq_length n_heads d_head -> batch_size seq_length n_heads', reduction='sum') + + # query_states = F.elu(query_states) + 1 + # retrieved_memory = einsum(query_states, memory, 'batch_size q_length n_heads d_head, batch_size n_heads k_length v_length -> batch_size q_length s d') + # retrieved_memory = torch.matmul(query_states, memory) / torch.matmul(query_states, normalization) + + memory, normalization = self._get_memory(key_states, value_states) + self._retrieve_from_memory(query_states, memory, normalization) + assert 1 == 1 + # NOTE: update memory + + def _get_memory(self, key_states, value_states): + key_states = F.elu(key_states) + 1 + memory = torch.matmul(key_states.transpose(-2, -1), value_states) + # memory = einsum(key_states, value_states, 'batch_size n_heads k_length d_head, batch_size n_heads v_length d_head -> batch_size n_heads k_length v_length') + normalization = reduce( + key_states, "batch_size n_heads seq_length d_head -> batch_size n_heads d_head", reduction="sum" + ) + return memory, normalization + + def _retrieve_from_memory(self, query_states, memory, normalization): + query_states = F.elu(query_states) + 1 + retrieved_memory = einsum( + query_states, + memory, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", + ) + + denominator = einsum( + query_states, + normalization, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", + ) + # [batch_size, n_heads, seq_length, d_v] / [batch_size, n_heads, seq_length, 1], so each d_v is divide by the normalized value + retrieved_memory = retrieved_memory / denominator[:, :, :, None] + return retrieved_memory diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 952bd8ba..43c487c6 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -26,6 +26,7 @@ from nanotron.generation.generate_store import AttachableStore from nanotron.logging import log_rank from nanotron.models import NanotronModel +from nanotron.models.attention import InfiniAttention from nanotron.nn.activations import ACT2FN from nanotron.nn.layer_norm import TritonRMSNorm from nanotron.parallel import ParallelContext @@ -348,6 +349,7 @@ def forward( self, hidden_states, # [seq_length, batch_size, hidden_size] sequence_mask, # [batch_size, seq_length] + return_qkv_states: bool = False, ): from flash_attn import bert_padding from flash_attn.flash_attn_interface import ( @@ -595,7 +597,9 @@ def forward( ) output = self.o_proj(attention_output) - return {"hidden_states": output, "sequence_mask": sequence_mask} + return_outputs = {"hidden_states": output, "sequence_mask": sequence_mask} + return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () + return return_outputs class LlamaDecoderLayer(nn.Module): @@ -608,7 +612,14 @@ def __init__( ): super().__init__() self.input_layernorm = TritonRMSNorm(config.hidden_size, eps=config.rms_norm_eps) - self.attn = CausalSelfAttention( + # self.attn = CausalSelfAttention( + # config=config, + # parallel_config=parallel_config, + # tp_pg=tp_pg, + # layer_idx=layer_idx, + # ) + + self.attn = InfiniAttention( config=config, parallel_config=parallel_config, tp_pg=tp_pg, diff --git a/tests/test_attention.py b/tests/test_attention.py new file mode 100644 index 00000000..444c4b47 --- /dev/null +++ b/tests/test_attention.py @@ -0,0 +1,28 @@ +import pytest +import torch +from helpers.utils import available_gpus, init_distributed, rerun_if_address_is_in_use +from nanotron.models.attention import InfiniAttention +from nanotron.parallel import ParallelContext + + +@pytest.mark.parametrize("tp,dp,pp", [pytest.param(i, 1, 1) for i in range(1, min(4, available_gpus()) + 1)]) +@rerun_if_address_is_in_use() +def test_infini_attention(tp: int, dp: int, pp: int): + SEQ_LEN = 10 + BATCH_SIZE = 5 + HIDDEN_SIZE = 16 + + hidden_states = torch.randn(SEQ_LEN, BATCH_SIZE, HIDDEN_SIZE) + sequence_mask = torch.randint(0, 2, (BATCH_SIZE, SEQ_LEN)).bool() + + init_distributed(tp=tp, dp=dp, pp=pp)(_test_infini_attention)(hidden_states, sequence_mask) + + +def _test_infini_attention( + parallel_context: ParallelContext, hidden_states: torch.Tensor, sequence_mask: torch.Tensor +): + attn_output = InfiniAttention() + + assert attn_output.shape == hidden_states.shape + + parallel_context.destroy() From 7659415d225a1dcc68975f99ba01fa302f0778eb Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Mon, 22 Apr 2024 10:09:14 +0000 Subject: [PATCH 02/43] add computing the output --- src/nanotron/models/attention.py | 60 +++++++++++++++++++++++++++++--- src/nanotron/models/llama.py | 1 + 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/src/nanotron/models/attention.py b/src/nanotron/models/attention.py index 2244e030..44062beb 100644 --- a/src/nanotron/models/attention.py +++ b/src/nanotron/models/attention.py @@ -10,6 +10,7 @@ from torchtyping import TensorType from nanotron.config import LlamaConfig, ParallelismArgs +from nanotron.parallel.tensor_parallel.nn import TensorParallelRowLinear class InfiniAttention(nn.Module): @@ -18,9 +19,17 @@ def __init__( ): super().__init__() - from nanotron.models.llama import CausalSelfAttention + tp_mode = parallel_config.tp_mode if parallel_config is not None else TensorParallelLinearMode.ALL_REDUCE + tp_linear_async_communication = ( + parallel_config.tp_linear_async_communication if parallel_config is not None else False + ) + + self.config = config + + # self.balance_factor = 0.5 + self.attn = CausalSelfAttention( config=config, parallel_config=parallel_config, @@ -28,6 +37,22 @@ def __init__( layer_idx=layer_idx, ) + d_model = config.hidden_size + self.d_head = config.hidden_size // config.num_attention_heads + + self.o_proj = TensorParallelRowLinear( + config.num_attention_heads * self.d_head, + d_model, + pg=tp_pg, + mode=tp_mode, + bias=False, + async_communication=tp_linear_async_communication, + ) + + assert self.o_proj.weight.shape == self.attn.o_proj.weight.shape + + # self.balance_factor = nn.Parameter(torch.tensor(0.5)) + def forward( self, hidden_states: TensorType["seq_length", "batch_size", "hidden_size"], @@ -35,13 +60,12 @@ def forward( ): attn_outputs = self.attn(hidden_states=hidden_states, sequence_mask=sequence_mask, return_qkv_states=True) - attn_outputs["hidden_states"] + local_attn_outputs = attn_outputs["attention_output"] # NOTE: query_states.shape = [batch_size * q_length, self.n_heads, d_qk] # NOTE: key_states.shape or value_states.shape = [batch_size * kv_length, self.n_heads, d_qk] query_states, key_states, value_states = attn_outputs["qkv_states"] - query_states.shape[-1] - query_states.shape[-2] + batch_size = hidden_states.shape[1] query_states = rearrange( @@ -49,6 +73,10 @@ def forward( "(batch_size seq_length) n_heads d_head -> batch_size n_heads seq_length d_head", batch_size=batch_size, ) + # NOTE: because the number of heads are splited in TP + # so we find them on the fly + N_HEADS = query_states.shape[1] + key_states = rearrange( key_states, "(batch_size seq_length) n_heads d_head -> batch_size n_heads seq_length d_head", @@ -78,7 +106,29 @@ def forward( # retrieved_memory = torch.matmul(query_states, memory) / torch.matmul(query_states, normalization) memory, normalization = self._get_memory(key_states, value_states) - self._retrieve_from_memory(query_states, memory, normalization) + retrieved_memory = self._retrieve_from_memory(query_states, memory, normalization) + local_attn_outputs = rearrange( + local_attn_outputs, + "seq_length batch_size (n_heads d_head) -> batch_size n_heads seq_length d_head", + d_head=self.d_head, + ) + # assert self.balance_factor.shape == n_heads + + balance_factors = torch.randn(N_HEADS, device=local_attn_outputs.device, dtype=local_attn_outputs.dtype) + + global_weights = F.sigmoid(balance_factors) + global_attn_outputs = global_weights[None, :, None, None] * retrieved_memory + + local_weights = F.sigmoid(1 - balance_factors) + local_attn_outputs = local_weights[None, :, None, None] * local_attn_outputs + + attention_output = global_attn_outputs + local_attn_outputs + attention_output = rearrange( + attention_output, "batch_size n_heads seq_len d_head -> batch_size seq_len (n_heads d_head)" + ) + + self.o_proj(attention_output) + assert 1 == 1 # NOTE: update memory diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 43c487c6..b8f30098 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -599,6 +599,7 @@ def forward( return_outputs = {"hidden_states": output, "sequence_mask": sequence_mask} return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () + return_outputs["attention_output"] = attention_output return return_outputs From 936a45b7e92e404ac66cd33c2c6c6f3d540c7246 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 23 Apr 2024 06:20:59 +0000 Subject: [PATCH 03/43] add linear delta memory update --- src/nanotron/models/attention.py | 234 ++++++++++++++++++++----------- src/nanotron/models/llama.py | 29 ++-- 2 files changed, 170 insertions(+), 93 deletions(-) diff --git a/src/nanotron/models/attention.py b/src/nanotron/models/attention.py index 44062beb..fb7c3a21 100644 --- a/src/nanotron/models/attention.py +++ b/src/nanotron/models/attention.py @@ -10,7 +10,10 @@ from torchtyping import TensorType from nanotron.config import LlamaConfig, ParallelismArgs -from nanotron.parallel.tensor_parallel.nn import TensorParallelRowLinear +from nanotron.parallel.tensor_parallel.nn import ( + TensorParallelLinearMode, + TensorParallelRowLinear, +) class InfiniAttention(nn.Module): @@ -19,6 +22,8 @@ def __init__( ): super().__init__() + self.n_segments = 4 + from nanotron.models.llama import CausalSelfAttention tp_mode = parallel_config.tp_mode if parallel_config is not None else TensorParallelLinearMode.ALL_REDUCE @@ -28,8 +33,6 @@ def __init__( self.config = config - # self.balance_factor = 0.5 - self.attn = CausalSelfAttention( config=config, parallel_config=parallel_config, @@ -48,110 +51,179 @@ def __init__( bias=False, async_communication=tp_linear_async_communication, ) + self.n_local_heads = self.attn.n_local_q_heads - assert self.o_proj.weight.shape == self.attn.o_proj.weight.shape + device = self.o_proj.weight.device + dtype = self.o_proj.weight.dtype + self.balance_factors = nn.Parameter(torch.randn(self.n_local_heads, device=device, dtype=dtype)) + + # assert self.o_proj.weight.shape == self.attn.o_proj.weight.shape # self.balance_factor = nn.Parameter(torch.tensor(0.5)) + # for p in self.attn.o_proj.parameters(): + # p.requires_grad = False + def forward( self, hidden_states: TensorType["seq_length", "batch_size", "hidden_size"], sequence_mask: TensorType["batch_size", "seq_length"], ): - attn_outputs = self.attn(hidden_states=hidden_states, sequence_mask=sequence_mask, return_qkv_states=True) - - local_attn_outputs = attn_outputs["attention_output"] - - # NOTE: query_states.shape = [batch_size * q_length, self.n_heads, d_qk] - # NOTE: key_states.shape or value_states.shape = [batch_size * kv_length, self.n_heads, d_qk] - query_states, key_states, value_states = attn_outputs["qkv_states"] - batch_size = hidden_states.shape[1] + seq_len = hidden_states.shape[0] + segment_length = seq_len // self.n_segments + hidden_size = hidden_states.shape[2] + + segment_hidden_states = torch.chunk(hidden_states, chunks=self.n_segments, dim=0) + segment_sequence_masks = torch.chunk(sequence_mask, chunks=self.n_segments, dim=1) + + memory = None + normalization = None + + outputs = [] + + # sequence_masks = [] + for segment_hidden_state, segment_sequence_mask in zip(segment_hidden_states, segment_sequence_masks): + attn_outputs = self.attn( + hidden_states=segment_hidden_state, sequence_mask=segment_sequence_mask, return_qkv_states=True + ) + + local_attn_outputs = attn_outputs["attention_output"] + # sequence_masks.append(attn_outputs["sequence_mask"]) + + # NOTE: query_states.shape = [batch_size * q_length, self.n_heads, d_qk] + # NOTE: key_states.shape or value_states.shape = [batch_size * kv_length, self.n_heads, d_qk] + query_states, key_states, value_states = attn_outputs["qkv_states"] + + query_states = rearrange( + query_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + ) + # NOTE: because the number of heads are splited in TP + # so we find them on the fly + + key_states = rearrange( + key_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + ) + value_states = rearrange( + value_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + ) + + # NOTE: because we split the heads in TP, we need to find the number of heads on the fly + N_HEADS = query_states.shape[1] + assert N_HEADS == self.n_local_heads + # balance_factors = torch.randn(N_HEADS, device=local_attn_outputs.device, dtype=local_attn_outputs.dtype) + + retrieved_memory = self._retrieve_from_memory( + query_states, prev_memory=memory, prev_normalization=normalization + ) + retrieved_memory = retrieved_memory.detach() + + local_attn_outputs = rearrange( + local_attn_outputs, + "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", + d_head=self.d_head, + ) + + global_weights = F.sigmoid(self.balance_factors) + global_attn_outputs = global_weights[None, :, None, None] * retrieved_memory + + local_weights = F.sigmoid(1 - self.balance_factors) + local_attn_outputs = local_weights[None, :, None, None] * local_attn_outputs + + attention_output = global_attn_outputs + local_attn_outputs + attention_output = rearrange( + attention_output, "batch_size n_heads seq_len d_head -> seq_len batch_size (n_heads d_head)" + ) + + output = self.o_proj(attention_output) + + assert output.shape == (segment_length, batch_size, hidden_size) + + memory, normalization = self._update_memory(memory, normalization, key_states, value_states) + memory = memory.detach() + normalization = normalization.detach() + + outputs.append(output) + + # NOTE: update memory + outputs = torch.cat(outputs, dim=0) # concat along sequence dimension + assert outputs.shape == hidden_states.shape + + # sequence_masks = torch.cat(sequence_masks, dim=1) + # assert sequence_masks.shape == sequence_mask.shape + return_outputs = {"hidden_states": outputs, "sequence_mask": sequence_mask} + return return_outputs + + def _update_memory(self, prev_memory, prev_normalization, key_states, value_states): + TYPE = "delta" + key_states = F.elu(key_states) + 1 - query_states = rearrange( - query_states, - "(batch_size seq_length) n_heads d_head -> batch_size n_heads seq_length d_head", - batch_size=batch_size, - ) - # NOTE: because the number of heads are splited in TP - # so we find them on the fly - N_HEADS = query_states.shape[1] - - key_states = rearrange( - key_states, - "(batch_size seq_length) n_heads d_head -> batch_size n_heads seq_length d_head", - batch_size=batch_size, - ) - value_states = rearrange( - value_states, - "(batch_size seq_length) n_heads d_head -> batch_size n_heads seq_length d_head", - batch_size=batch_size, - ) - - # query_states = query_states.view(batch_size, -1, n_heads, d_head) # [batch_size, q_length, n_heads, d_qk] - # key_states = key_states.view(batch_size, -1, n_heads, d_head) - # value_states = value_states.view(batch_size, -1, n_heads, d_head) - - # memory = torch.matmul(key_states, value_states.transpose(-1, -2)) - # normalization = key_states.sum(dim=-1, keepdim=True) - - # memory = einsum(key_states, value_states, 'b n h d, b n h d -> b h d d') - # memory = einsum(key_states, value_states, 'b i j h, b i l h -> b i j l') - - # memory = einsum(F.elu(key_states) + 1, value_states, 'batch_size k_length n_heads d_head, batch_size v_length n_heads d_head -> batch_size n_heads k_length v_length') - # normalization = reduce(key_states, 'batch_size seq_length n_heads d_head -> batch_size seq_length n_heads', reduction='sum') - - # query_states = F.elu(query_states) + 1 - # retrieved_memory = einsum(query_states, memory, 'batch_size q_length n_heads d_head, batch_size n_heads k_length v_length -> batch_size q_length s d') - # retrieved_memory = torch.matmul(query_states, memory) / torch.matmul(query_states, normalization) - - memory, normalization = self._get_memory(key_states, value_states) - retrieved_memory = self._retrieve_from_memory(query_states, memory, normalization) - local_attn_outputs = rearrange( - local_attn_outputs, - "seq_length batch_size (n_heads d_head) -> batch_size n_heads seq_length d_head", - d_head=self.d_head, - ) - # assert self.balance_factor.shape == n_heads - - balance_factors = torch.randn(N_HEADS, device=local_attn_outputs.device, dtype=local_attn_outputs.dtype) - - global_weights = F.sigmoid(balance_factors) - global_attn_outputs = global_weights[None, :, None, None] * retrieved_memory - - local_weights = F.sigmoid(1 - balance_factors) - local_attn_outputs = local_weights[None, :, None, None] * local_attn_outputs - - attention_output = global_attn_outputs + local_attn_outputs - attention_output = rearrange( - attention_output, "batch_size n_heads seq_len d_head -> batch_size seq_len (n_heads d_head)" - ) - - self.o_proj(attention_output) - - assert 1 == 1 - # NOTE: update memory + if TYPE == "linear": + # memory = torch.matmul(key_states.transpose(-2, -1), value_states) + new_value_states = value_states + else: + if prev_memory is None or prev_normalization is None: + new_value_states = value_states + else: + # denominator = torch.matmul(key_states, prev_normalization) + # denominator = denominator[:, :, :, None] + + # numerator = einsum( + # key_states, prev_memory, + # "batch_size n_heads seq_len d_head, batch_size n_heads seq_len d_head -> batch_size n_heads seq_len" + # ) + + numerator = einsum( + key_states, + prev_memory, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", + ) + + # denominator = einsum( + # key_states, prev_normalization, + # "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size seq_len" + # ) + denominator = einsum( + key_states, + prev_normalization, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", + ) + + prev_v = numerator / denominator[:, :, :, None] + new_value_states = value_states - prev_v + + memory = torch.matmul(key_states.transpose(-2, -1), new_value_states) - def _get_memory(self, key_states, value_states): - key_states = F.elu(key_states) + 1 - memory = torch.matmul(key_states.transpose(-2, -1), value_states) # memory = einsum(key_states, value_states, 'batch_size n_heads k_length d_head, batch_size n_heads v_length d_head -> batch_size n_heads k_length v_length') normalization = reduce( key_states, "batch_size n_heads seq_length d_head -> batch_size n_heads d_head", reduction="sum" ) + + memory += prev_memory if prev_memory is not None else 0 + normalization += prev_normalization if prev_normalization is not None else 0 + return memory, normalization - def _retrieve_from_memory(self, query_states, memory, normalization): + def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): + if prev_memory is None: + return torch.zeros_like(query_states) + query_states = F.elu(query_states) + 1 retrieved_memory = einsum( query_states, - memory, + prev_memory, "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", ) denominator = einsum( query_states, - normalization, + prev_normalization, "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", ) # [batch_size, n_heads, seq_length, d_v] / [batch_size, n_heads, seq_length, 1], so each d_v is divide by the normalized value diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index b8f30098..5e2b6a21 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -326,14 +326,14 @@ def __init__( # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) - self.o_proj = TensorParallelRowLinear( - config.num_attention_heads * self.d_qk, - self.d_model, - pg=tp_pg, - mode=tp_mode, - bias=False, - async_communication=tp_linear_async_communication, - ) + # self.o_proj = TensorParallelRowLinear( + # config.num_attention_heads * self.d_qk, + # self.d_model, + # pg=tp_pg, + # mode=tp_mode, + # bias=False, + # async_communication=tp_linear_async_communication, + # ) self.attention = CoreAttention( config, @@ -595,9 +595,9 @@ def forward( attention_output = ( attention_output.contiguous().view(batch_size, q_length, self.n_local_q_heads * self.d_v).transpose(0, 1) ) - output = self.o_proj(attention_output) + # output = self.o_proj(attention_output) - return_outputs = {"hidden_states": output, "sequence_mask": sequence_mask} + return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () return_outputs["attention_output"] = attention_output return return_outputs @@ -956,8 +956,13 @@ def init_model_randomly(self, config: Config): # Already initialized continue - module = model.get_submodule(module_name) - parametrizator.parametrize(param_name, module) + if "balance_factors" in param_name: + import torch.nn.init as init + + init.normal_(param, mean=0.0, std=0.01) + else: + module = model.get_submodule(module_name) + parametrizator.parametrize(param_name, module) assert full_param_name not in initialized_parameters initialized_parameters.add(full_param_name) From 8f3a61e8b2f1e52a1760c61a1f76e7f65e8cff56 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 23 Apr 2024 07:32:00 +0000 Subject: [PATCH 04/43] fix computing global attention --- src/nanotron/models/attention.py | 96 ++++++++++++++++---------------- src/nanotron/models/llama.py | 41 +++++++------- 2 files changed, 68 insertions(+), 69 deletions(-) diff --git a/src/nanotron/models/attention.py b/src/nanotron/models/attention.py index fb7c3a21..537140b9 100644 --- a/src/nanotron/models/attention.py +++ b/src/nanotron/models/attention.py @@ -51,6 +51,8 @@ def __init__( bias=False, async_communication=tp_linear_async_communication, ) + # NOTE: because the number of heads are splited in TP + # so we find them on the fly self.n_local_heads = self.attn.n_local_q_heads device = self.o_proj.weight.device @@ -66,7 +68,7 @@ def __init__( def forward( self, - hidden_states: TensorType["seq_length", "batch_size", "hidden_size"], + hidden_states: TensorType["sharded_seq_length", "batch_size", "hidden_size"], sequence_mask: TensorType["batch_size", "seq_length"], ): batch_size = hidden_states.shape[1] @@ -89,40 +91,34 @@ def forward( ) local_attn_outputs = attn_outputs["attention_output"] - # sequence_masks.append(attn_outputs["sequence_mask"]) - - # NOTE: query_states.shape = [batch_size * q_length, self.n_heads, d_qk] - # NOTE: key_states.shape or value_states.shape = [batch_size * kv_length, self.n_heads, d_qk] query_states, key_states, value_states = attn_outputs["qkv_states"] query_states = rearrange( query_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", batch_size=batch_size, + n_heads=self.n_local_heads, ) - # NOTE: because the number of heads are splited in TP - # so we find them on the fly - key_states = rearrange( key_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", batch_size=batch_size, + n_heads=self.n_local_heads, ) value_states = rearrange( value_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", batch_size=batch_size, + n_heads=self.n_local_heads, ) - # NOTE: because we split the heads in TP, we need to find the number of heads on the fly - N_HEADS = query_states.shape[1] - assert N_HEADS == self.n_local_heads - # balance_factors = torch.randn(N_HEADS, device=local_attn_outputs.device, dtype=local_attn_outputs.dtype) + # assert query_states.shape == (batch_size, self.n_local_heads, segment_length, self.d_head) + assert query_states.shape == key_states.shape == value_states.shape retrieved_memory = self._retrieve_from_memory( query_states, prev_memory=memory, prev_normalization=normalization ) - retrieved_memory = retrieved_memory.detach() + # retrieved_memory = retrieved_memory.detach() local_attn_outputs = rearrange( local_attn_outputs, @@ -131,12 +127,17 @@ def forward( ) global_weights = F.sigmoid(self.balance_factors) - global_attn_outputs = global_weights[None, :, None, None] * retrieved_memory + global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") + + local_weights = 1 - F.sigmoid(self.balance_factors) + local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") - local_weights = F.sigmoid(1 - self.balance_factors) - local_attn_outputs = local_weights[None, :, None, None] * local_attn_outputs + # assert torch.allclose(global_weights + local_weights, torch.ones_like(global_weights)) + + attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs + + # assert attention_output.shape == (batch_size, self.n_local_heads, segment_length, self.d_head) - attention_output = global_attn_outputs + local_attn_outputs attention_output = rearrange( attention_output, "batch_size n_heads seq_len d_head -> seq_len batch_size (n_heads d_head)" ) @@ -146,8 +147,8 @@ def forward( assert output.shape == (segment_length, batch_size, hidden_size) memory, normalization = self._update_memory(memory, normalization, key_states, value_states) - memory = memory.detach() - normalization = normalization.detach() + # memory = memory.detach() + # normalization = normalization.detach() outputs.append(output) @@ -160,6 +161,30 @@ def forward( return_outputs = {"hidden_states": outputs, "sequence_mask": sequence_mask} return return_outputs + def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): + # return torch.zeros_like(query_states) + if prev_memory is None: + return torch.zeros_like(query_states) + + query_states = F.elu(query_states) + 1 + retrieved_memory = einsum( + query_states, + prev_memory, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", + ) + + denominator = einsum( + query_states, + prev_normalization, + "batch_size n_heads seq_length d_head, batch_size n_heads d_head -> batch_size n_heads seq_length", + ) + denominator = rearrange(denominator, "batch_size n_heads seq_length -> batch_size n_heads seq_length 1") + # [batch_size, n_heads, seq_length, d_v] / [batch_size, n_heads, seq_length, 1], so each d_v is divide by the normalized value + + # NOTE: because normalization is the sum of all the keys, so each word should have the same normalization + retrieved_memory = retrieved_memory / denominator + return retrieved_memory + def _update_memory(self, prev_memory, prev_normalization, key_states, value_states): TYPE = "delta" key_states = F.elu(key_states) + 1 @@ -171,14 +196,6 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat if prev_memory is None or prev_normalization is None: new_value_states = value_states else: - # denominator = torch.matmul(key_states, prev_normalization) - # denominator = denominator[:, :, :, None] - - # numerator = einsum( - # key_states, prev_memory, - # "batch_size n_heads seq_len d_head, batch_size n_heads seq_len d_head -> batch_size n_heads seq_len" - # ) - numerator = einsum( key_states, prev_memory, @@ -194,8 +211,11 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat prev_normalization, "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", ) + denominator = rearrange( + denominator, "batch_size n_heads seq_length -> batch_size n_heads seq_length 1" + ) - prev_v = numerator / denominator[:, :, :, None] + prev_v = numerator / denominator new_value_states = value_states - prev_v memory = torch.matmul(key_states.transpose(-2, -1), new_value_states) @@ -209,23 +229,3 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat normalization += prev_normalization if prev_normalization is not None else 0 return memory, normalization - - def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): - if prev_memory is None: - return torch.zeros_like(query_states) - - query_states = F.elu(query_states) + 1 - retrieved_memory = einsum( - query_states, - prev_memory, - "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", - ) - - denominator = einsum( - query_states, - prev_normalization, - "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", - ) - # [batch_size, n_heads, seq_length, d_v] / [batch_size, n_heads, seq_length, 1], so each d_v is divide by the normalized value - retrieved_memory = retrieved_memory / denominator[:, :, :, None] - return retrieved_memory diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 5e2b6a21..0472f3f2 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -26,7 +26,6 @@ from nanotron.generation.generate_store import AttachableStore from nanotron.logging import log_rank from nanotron.models import NanotronModel -from nanotron.models.attention import InfiniAttention from nanotron.nn.activations import ACT2FN from nanotron.nn.layer_norm import TritonRMSNorm from nanotron.parallel import ParallelContext @@ -326,14 +325,14 @@ def __init__( # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) - # self.o_proj = TensorParallelRowLinear( - # config.num_attention_heads * self.d_qk, - # self.d_model, - # pg=tp_pg, - # mode=tp_mode, - # bias=False, - # async_communication=tp_linear_async_communication, - # ) + self.o_proj = TensorParallelRowLinear( + config.num_attention_heads * self.d_qk, + self.d_model, + pg=tp_pg, + mode=tp_mode, + bias=False, + async_communication=tp_linear_async_communication, + ) self.attention = CoreAttention( config, @@ -595,11 +594,11 @@ def forward( attention_output = ( attention_output.contiguous().view(batch_size, q_length, self.n_local_q_heads * self.d_v).transpose(0, 1) ) - # output = self.o_proj(attention_output) + output = self.o_proj(attention_output) - return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} - return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () - return_outputs["attention_output"] = attention_output + return_outputs = {"hidden_states": output, "sequence_mask": sequence_mask} + # return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () + # return_outputs["attention_output"] = attention_output return return_outputs @@ -613,20 +612,20 @@ def __init__( ): super().__init__() self.input_layernorm = TritonRMSNorm(config.hidden_size, eps=config.rms_norm_eps) - # self.attn = CausalSelfAttention( - # config=config, - # parallel_config=parallel_config, - # tp_pg=tp_pg, - # layer_idx=layer_idx, - # ) - - self.attn = InfiniAttention( + self.attn = CausalSelfAttention( config=config, parallel_config=parallel_config, tp_pg=tp_pg, layer_idx=layer_idx, ) + # self.attn = InfiniAttention( + # config=config, + # parallel_config=parallel_config, + # tp_pg=tp_pg, + # layer_idx=layer_idx, + # ) + self.post_attention_layernorm = TritonRMSNorm(config.hidden_size, eps=config.rms_norm_eps) self.mlp = MLP(config=config, parallel_config=parallel_config, tp_pg=tp_pg) From d681ee5da44f26e4f101538810674ccb46b1b7a9 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 23 Apr 2024 11:29:36 +0000 Subject: [PATCH 05/43] fix --- src/nanotron/distributed.py | 2 +- src/nanotron/models/attention.py | 9 ++++--- src/nanotron/models/llama.py | 42 +++++++++++++++++--------------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/nanotron/distributed.py b/src/nanotron/distributed.py index 0156b1bb..566b6af2 100644 --- a/src/nanotron/distributed.py +++ b/src/nanotron/distributed.py @@ -13,7 +13,7 @@ torch_version_above_1_13 = version.parse(torch.__version__) >= version.parse("1.13.0") Work = dist.Work if torch_version_above_1_13 else dist._Work -default_pg_timeout = datetime.timedelta(minutes=10) +default_pg_timeout = datetime.timedelta(minutes=1000) def new_group( # pylint: disable=function-redefined diff --git a/src/nanotron/models/attention.py b/src/nanotron/models/attention.py index 537140b9..3d855fe3 100644 --- a/src/nanotron/models/attention.py +++ b/src/nanotron/models/attention.py @@ -22,7 +22,7 @@ def __init__( ): super().__init__() - self.n_segments = 4 + self.n_segments = 50 from nanotron.models.llama import CausalSelfAttention @@ -57,6 +57,7 @@ def __init__( device = self.o_proj.weight.device dtype = self.o_proj.weight.dtype + # self.balance_factors = TensorParallelRowLinear(config.num_attention_heads * self.d_head, 1, pg=tp_pg, mode=tp_mode) self.balance_factors = nn.Parameter(torch.randn(self.n_local_heads, device=device, dtype=dtype)) # assert self.o_proj.weight.shape == self.attn.o_proj.weight.shape @@ -97,19 +98,19 @@ def forward( query_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", batch_size=batch_size, - n_heads=self.n_local_heads, + # n_heads=self.n_local_heads, ) key_states = rearrange( key_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", batch_size=batch_size, - n_heads=self.n_local_heads, + # n_heads=self.n_local_heads, ) value_states = rearrange( value_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", batch_size=batch_size, - n_heads=self.n_local_heads, + # n_heads=self.n_local_heads, ) # assert query_states.shape == (batch_size, self.n_local_heads, segment_length, self.d_head) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 0472f3f2..f241a51a 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -325,14 +325,14 @@ def __init__( # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) - self.o_proj = TensorParallelRowLinear( - config.num_attention_heads * self.d_qk, - self.d_model, - pg=tp_pg, - mode=tp_mode, - bias=False, - async_communication=tp_linear_async_communication, - ) + # self.o_proj = TensorParallelRowLinear( + # config.num_attention_heads * self.d_qk, + # self.d_model, + # pg=tp_pg, + # mode=tp_mode, + # bias=False, + # async_communication=tp_linear_async_communication, + # ) self.attention = CoreAttention( config, @@ -594,11 +594,11 @@ def forward( attention_output = ( attention_output.contiguous().view(batch_size, q_length, self.n_local_q_heads * self.d_v).transpose(0, 1) ) - output = self.o_proj(attention_output) + # output = self.o_proj(attention_output) - return_outputs = {"hidden_states": output, "sequence_mask": sequence_mask} - # return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () - # return_outputs["attention_output"] = attention_output + return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} + return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () + return_outputs["attention_output"] = attention_output return return_outputs @@ -612,20 +612,22 @@ def __init__( ): super().__init__() self.input_layernorm = TritonRMSNorm(config.hidden_size, eps=config.rms_norm_eps) - self.attn = CausalSelfAttention( - config=config, - parallel_config=parallel_config, - tp_pg=tp_pg, - layer_idx=layer_idx, - ) - - # self.attn = InfiniAttention( + # self.attn = CausalSelfAttention( # config=config, # parallel_config=parallel_config, # tp_pg=tp_pg, # layer_idx=layer_idx, # ) + from nanotron.models.attention import InfiniAttention + + self.attn = InfiniAttention( + config=config, + parallel_config=parallel_config, + tp_pg=tp_pg, + layer_idx=layer_idx, + ) + self.post_attention_layernorm = TritonRMSNorm(config.hidden_size, eps=config.rms_norm_eps) self.mlp = MLP(config=config, parallel_config=parallel_config, tp_pg=tp_pg) From 74545cc8330608a7a74e55e976f297663add143a Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Sat, 27 Apr 2024 09:05:02 +0000 Subject: [PATCH 06/43] support gqa and new theta --- src/nanotron/models/attention.py | 17 +++++++++++++++-- src/nanotron/models/llama.py | 7 ++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/nanotron/models/attention.py b/src/nanotron/models/attention.py index 3d855fe3..1b1f5f47 100644 --- a/src/nanotron/models/attention.py +++ b/src/nanotron/models/attention.py @@ -22,7 +22,7 @@ def __init__( ): super().__init__() - self.n_segments = 50 + self.n_segments = 4 from nanotron.models.llama import CausalSelfAttention @@ -114,7 +114,7 @@ def forward( ) # assert query_states.shape == (batch_size, self.n_local_heads, segment_length, self.d_head) - assert query_states.shape == key_states.shape == value_states.shape + # assert query_states.shape == key_states.shape == value_states.shape retrieved_memory = self._retrieve_from_memory( query_states, prev_memory=memory, prev_normalization=normalization @@ -167,6 +167,19 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): if prev_memory is None: return torch.zeros_like(query_states) + from einops import repeat + + prev_memory = repeat( + prev_memory, + "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", + n=self.attn.n_repeats, + ) + prev_normalization = repeat( + prev_normalization, + "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", + n=self.attn.n_repeats, + ) + query_states = F.elu(query_states) + 1 retrieved_memory = einsum( query_states, diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index f241a51a..3b3bf511 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -317,13 +317,10 @@ def __init__( contiguous_chunks=qkv_contiguous_chunks, ) # TODO(kunhao): We want to have only one version per device and not one version per layer. - self.rotary_embedding = RotaryEmbedding( - dim=self.d_qk, - end=config.max_position_embeddings, - ) + self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings, theta=500000.0) # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) - self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) + self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True, base=500000.0) # self.o_proj = TensorParallelRowLinear( # config.num_attention_heads * self.d_qk, From 30b95a6b9305e1eee3e19c09e5d5f3a41ac2c06f Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Sat, 27 Apr 2024 09:10:04 +0000 Subject: [PATCH 07/43] support loading hf ckp --- src/nanotron/constants.py | 6 ++++ src/nanotron/serialize/utils.py | 19 +++++++++-- src/nanotron/serialize/weights.py | 30 ++++++++++++++--- src/nanotron/trainer.py | 55 ++++++++++++++++++++++++------- 4 files changed, 91 insertions(+), 19 deletions(-) diff --git a/src/nanotron/constants.py b/src/nanotron/constants.py index 84f6b55b..e9a101c1 100644 --- a/src/nanotron/constants.py +++ b/src/nanotron/constants.py @@ -5,3 +5,9 @@ CHECKPOINT_VERSION = Version("1.2") PY_VERSION = parse(platform.python_version()) + +OPTIMIZER_CONFIG_FILE_NAME = "optimizer_config.pt" +OPTIMIZER_CKP_PATH = "{}/optimizer/optimizer_config.pt" + +LR_SCHEDULER_CKP_PATH = "{}/lr_scheduler" +METADATA_CKP_PATH = "{}.checkpoint_metadata.json" diff --git a/src/nanotron/serialize/utils.py b/src/nanotron/serialize/utils.py index 661dcab6..0e9f0416 100644 --- a/src/nanotron/serialize/utils.py +++ b/src/nanotron/serialize/utils.py @@ -37,8 +37,21 @@ def get_path( suffix = tensor_name.split(".") suffix_path, suffix_name = suffix[:-1], suffix[-1] - suffix_name = f"{type.value}_{suffix_name}.safetensors" - + # suffix_name = f"{type.value}_{suffix_name}.safetensors" + + # NOTE: the original + # if exp_tp_pp_rank_and_size: + # # We always show pp_rank and tp_rank if `exp_tp_pp_rank_and_size` is provided + # # We only show exp_rank if tensor is exp_sharded and exp_size > 1 + # (exp_rank, exp_size), (tp_rank, tp_size), (pp_rank, pp_size) = exp_tp_pp_rank_and_size + # if not is_expert_sharded or exp_size == 1: + # suffix_name = ( + # f"{type.value}_{suffix_name}_pp-rank-{pp_rank}-of-{pp_size}_tp-rank-{tp_rank}-of-{tp_size}.safetensors" + # ) + # else: + # suffix_name = f"{type.value}_{suffix_name}_pp-rank-{pp_rank}-of-{pp_size}_tp-rank-{tp_rank}-of-{tp_size}_exp-rank-{exp_rank}-of-{exp_size}.safetensors" + + # NOTE: quick fix from https://huggingface.slack.com/archives/C065PTETH8S/p1713881041551769?thread_ts=1713876968.072339&cid=C065PTETH8S if exp_tp_pp_rank_and_size: # We always show pp_rank and tp_rank if `exp_tp_pp_rank_and_size` is provided # We only show exp_rank if tensor is exp_sharded and exp_size > 1 @@ -49,6 +62,8 @@ def get_path( ) else: suffix_name = f"{type.value}_{suffix_name}_pp-rank-{pp_rank}-of-{pp_size}_tp-rank-{tp_rank}-of-{tp_size}_exp-rank-{exp_rank}-of-{exp_size}.safetensors" + else: + suffix_name = f"{type.value}_{suffix_name}.safetensors" # <- HERE suffix_path.append(suffix_name) if prefix is None: diff --git a/src/nanotron/serialize/weights.py b/src/nanotron/serialize/weights.py index c857154f..9b3e2b25 100644 --- a/src/nanotron/serialize/weights.py +++ b/src/nanotron/serialize/weights.py @@ -198,6 +198,7 @@ def load_weights( parallel_context: ParallelContext, root_folder: Path, filtered_state_dict: Optional[Dict[str, Any]] = None, + strict: bool = False, ): """Load weights from a checkpoint @@ -206,6 +207,8 @@ def load_weights( parallel_context: distributed process groups root_folder: root folder of the checkpoint filtered_state_dict: state dict to load from (overrides model.state_dict()). if None, load from model.state_dict() + strict: whether to strictly enforce that the keys in the state_dict match the keys returned by this module's state_dict() function + if you set strict to False, we will skip loading the parameters that can't find the checkpoint file. """ param_root_folder = root_folder / "model" @@ -275,10 +278,18 @@ def load_weights( pass elif not path.parent.exists(): - raise ValueError( - f"Checkpoint is empty or checkpoint structure is not matching the model architecture." - f"Couldn't find folder {path.parent} in checkpoint at {root_folder}" - ) + if strict is False: + log_rank( + f"We can't find the checkpoint for parameter {name} at {path.parent}. Skipping it.", + logger=logger, + level=logging.WARNING, + rank=0, + ) + else: + raise ValueError( + f"Checkpoint is empty or checkpoint structure is not matching the model architecture." + f"Couldn't find folder {path.parent} in checkpoint at {root_folder}" + ) else: # Let's assume that the topology changed and the param is sharded. # We search for all the files from the shards, concatenate the "unsharded" tensor @@ -292,7 +303,16 @@ def load_weights( suffix = base_name.rsplit(".", 1)[-1] shards_path = list(path.parent.glob(f"{ObjectType.MODEL.value}_{suffix}*.safetensors")) if len(shards_path) <= 0: - raise ValueError(f"Could not find any shards in {path.parent}") + if strict is False: + log_rank( + f"We can't find the checkpoint for parameter {name} at {path}. Skipping it.", + logger=logger, + level=logging.WARNING, + rank=0, + ) + continue + else: + raise ValueError(f"Could not find any shards in {path.parent}") if checkpoint_version is None: checkpoint_version = get_checkpoint_version( diff --git a/src/nanotron/trainer.py b/src/nanotron/trainer.py index 32b52169..9d83682b 100644 --- a/src/nanotron/trainer.py +++ b/src/nanotron/trainer.py @@ -34,6 +34,7 @@ SpectralMupInit, get_config_from_file, ) +from nanotron.constants import LR_SCHEDULER_CKP_PATH, METADATA_CKP_PATH, OPTIMIZER_CKP_PATH from nanotron.dataloader import sanity_check_dataloader from nanotron.helpers import ( _vocab_size_with_padding, @@ -184,13 +185,24 @@ def __init__( parallel_context=self.parallel_context, ) if self.init_checkpoint_path is not None: - load_optimizer( - optimizer=self.optimizer, - parallel_context=self.parallel_context, - root_folder=self.init_checkpoint_path, - param_shard_metadata=self.param_shard_metadata, - model=self.model, - ) + # NOTE: in some cases where we convert hf checkpoints to nanotron checkpoints, + # we might not have the optimizer state + optim_ckp_path = OPTIMIZER_CKP_PATH.format(self.init_checkpoint_path) + if os.path.exists(optim_ckp_path): + load_optimizer( + optimizer=self.optimizer, + parallel_context=self.parallel_context, + root_folder=self.init_checkpoint_path, + param_shard_metadata=self.param_shard_metadata, + model=self.model, + ) + else: + log_rank( + f"Can't find the optimizer state's checkpoint in {optim_ckp_path}, so we skip loading its checkpoint!", + logger=logger, + level=logging.INFO, + rank=0, + ) # Init learning rate scheduler self.lr_scheduler = lr_scheduler_builder( @@ -199,13 +211,24 @@ def __init__( total_training_steps=self.config.tokens.train_steps, ) if self.init_checkpoint_path is not None: - load_lr_scheduler( - lr_scheduler=self.lr_scheduler, - root_folder=self.init_checkpoint_path, - ) + lr_scheduler_ckp_path = LR_SCHEDULER_CKP_PATH.format(self.init_checkpoint_path) + if os.path.exists(lr_scheduler_ckp_path): + load_lr_scheduler( + lr_scheduler=self.lr_scheduler, + root_folder=self.init_checkpoint_path, + ) + else: + log_rank( + f"Can't find the LR scheduler's checkpoint in {lr_scheduler_ckp_path}, so we skip loading its checkpoint!", + logger=logger, + level=logging.INFO, + rank=0, + ) # Define iteration start state - if self.init_checkpoint_path is not None: + metadata_ckp_path = METADATA_CKP_PATH.format(self.init_checkpoint_path) + is_ckp_meta_data_exists = os.path.exists(metadata_ckp_path) + if self.init_checkpoint_path is not None and is_ckp_meta_data_exists: checkpoint_metadata = load_meta( parallel_context=self.parallel_context, root_folder=self.init_checkpoint_path ) @@ -216,6 +239,14 @@ def __init__( self.config.tokens.train_steps > self.start_iteration_step ), f"Loaded checkpoint has already trained {self.start_iteration_step} batches, you need to specify a higher `config.tokens.train_steps`" else: + if self.init_checkpoint_path is not None and not is_ckp_meta_data_exists: + log_rank( + f"Can't find the checkpoint metadata in {metadata_ckp_path}, so we skip loading it!", + logger=logger, + level=logging.INFO, + rank=0, + ) + self.start_iteration_step = 0 self.consumed_train_samples = 0 From fef75ff0e5a5cb8e88706c9c5cacc057543f2424 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Sat, 27 Apr 2024 09:42:00 +0000 Subject: [PATCH 08/43] tested, llama3 wiht infini, get 5 loss --- src/nanotron/models/llama.py | 235 ++++++++++++++++++++++++++++++++--- 1 file changed, 217 insertions(+), 18 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 3b3bf511..23517131 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -254,6 +254,11 @@ def pad_to_right(tensor, mask, new_tensor=None): return new_tensor, right_padded_mask +import torch.nn.functional as F +from einops import einsum, rearrange, reduce +from torchtyping import TensorType + + class CausalSelfAttention(nn.Module, AttachableStore): def __init__( self, @@ -322,14 +327,14 @@ def __init__( # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True, base=500000.0) - # self.o_proj = TensorParallelRowLinear( - # config.num_attention_heads * self.d_qk, - # self.d_model, - # pg=tp_pg, - # mode=tp_mode, - # bias=False, - # async_communication=tp_linear_async_communication, - # ) + self.o_proj = TensorParallelRowLinear( + config.num_attention_heads * self.d_qk, + self.d_model, + pg=tp_pg, + mode=tp_mode, + bias=False, + async_communication=tp_linear_async_communication, + ) self.attention = CoreAttention( config, @@ -341,7 +346,200 @@ def __init__( config.max_position_embeddings ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings + self.n_segments = 4 + device = self.o_proj.weight.device + dtype = self.o_proj.weight.dtype + + from nanotron.parallel.sharded_parameters import SplitConfig, create_sharded_parameter_from_config + + balance_factors = nn.Parameter(torch.zeros(self.n_local_q_heads, device=device, dtype=dtype)) + self.balance_factors = create_sharded_parameter_from_config( + parameter=balance_factors, + pg=tp_pg, + split_config=SplitConfig( + split_dim=0, + # contiguous_chunks=(self.n_local_heads, self.n_local_heads) + ), + ) + def forward( + self, + hidden_states: TensorType["sharded_seq_length", "batch_size", "hidden_size"], + sequence_mask: TensorType["batch_size", "seq_length"], + ): + batch_size = hidden_states.shape[1] + seq_len = hidden_states.shape[0] + segment_length = seq_len // self.n_segments + hidden_size = hidden_states.shape[2] + + segment_hidden_states = torch.chunk(hidden_states, chunks=self.n_segments, dim=0) + segment_sequence_masks = torch.chunk(sequence_mask, chunks=self.n_segments, dim=1) + + memory = None + normalization = None + + outputs = [] + + # sequence_masks = [] + for segment_hidden_state, segment_sequence_mask in zip(segment_hidden_states, segment_sequence_masks): + attn_outputs = self.forward_with_hidden_states( + hidden_states=segment_hidden_state, sequence_mask=segment_sequence_mask, return_qkv_states=True + ) + + local_attn_outputs = attn_outputs["attention_output"] + query_states, key_states, value_states = attn_outputs["qkv_states"] + + query_states = rearrange( + query_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + # n_heads=self.n_local_heads, + ) + key_states = rearrange( + key_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + # n_heads=self.n_local_heads, + ) + value_states = rearrange( + value_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + # n_heads=self.n_local_heads, + ) + + # assert query_states.shape == (batch_size, self.n_local_heads, segment_length, self.d_head) + # assert query_states.shape == key_states.shape == value_states.shape + + retrieved_memory = self._retrieve_from_memory( + query_states, prev_memory=memory, prev_normalization=normalization + ) + # retrieved_memory = retrieved_memory.detach() + + local_attn_outputs = rearrange( + local_attn_outputs, + "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", + d_head=self.d_qk, + ) + + global_weights = F.sigmoid(self.balance_factors) + global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") + + local_weights = 1 - F.sigmoid(self.balance_factors) + local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") + + # assert torch.allclose(global_weights + local_weights, torch.ones_like(global_weights)) + + attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs + + # assert attention_output.shape == (batch_size, self.n_local_heads, segment_length, self.d_head) + + attention_output = rearrange( + attention_output, "batch_size n_heads seq_len d_head -> seq_len batch_size (n_heads d_head)" + ) + + output = self.o_proj(attention_output) + + assert output.shape == (segment_length, batch_size, hidden_size) + + memory, normalization = self._update_memory(memory, normalization, key_states, value_states) + # memory = memory.detach() + # normalization = normalization.detach() + + outputs.append(output) + + # NOTE: update memory + outputs = torch.cat(outputs, dim=0) # concat along sequence dimension + assert outputs.shape == hidden_states.shape + + # sequence_masks = torch.cat(sequence_masks, dim=1) + # assert sequence_masks.shape == sequence_mask.shape + return_outputs = {"hidden_states": outputs, "sequence_mask": sequence_mask} + return return_outputs + + def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): + # return torch.zeros_like(query_states) + if prev_memory is None: + return torch.zeros_like(query_states) + + from einops import repeat + + prev_memory = repeat( + prev_memory, + "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", + n=self.n_repeats, + ) + prev_normalization = repeat( + prev_normalization, + "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", + n=self.n_repeats, + ) + + query_states = F.elu(query_states) + 1 + retrieved_memory = einsum( + query_states, + prev_memory, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", + ) + + denominator = einsum( + query_states, + prev_normalization, + "batch_size n_heads seq_length d_head, batch_size n_heads d_head -> batch_size n_heads seq_length", + ) + denominator = rearrange(denominator, "batch_size n_heads seq_length -> batch_size n_heads seq_length 1") + # [batch_size, n_heads, seq_length, d_v] / [batch_size, n_heads, seq_length, 1], so each d_v is divide by the normalized value + + # NOTE: because normalization is the sum of all the keys, so each word should have the same normalization + retrieved_memory = retrieved_memory / denominator + return retrieved_memory + + def _update_memory(self, prev_memory, prev_normalization, key_states, value_states): + TYPE = "delta" + key_states = F.elu(key_states) + 1 + + if TYPE == "linear": + # memory = torch.matmul(key_states.transpose(-2, -1), value_states) + new_value_states = value_states + else: + if prev_memory is None or prev_normalization is None: + new_value_states = value_states + else: + numerator = einsum( + key_states, + prev_memory, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", + ) + + # denominator = einsum( + # key_states, prev_normalization, + # "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size seq_len" + # ) + denominator = einsum( + key_states, + prev_normalization, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", + ) + denominator = rearrange( + denominator, "batch_size n_heads seq_length -> batch_size n_heads seq_length 1" + ) + + prev_v = numerator / denominator + new_value_states = value_states - prev_v + + memory = torch.matmul(key_states.transpose(-2, -1), new_value_states) + + # memory = einsum(key_states, value_states, 'batch_size n_heads k_length d_head, batch_size n_heads v_length d_head -> batch_size n_heads k_length v_length') + normalization = reduce( + key_states, "batch_size n_heads seq_length d_head -> batch_size n_heads d_head", reduction="sum" + ) + + memory += prev_memory if prev_memory is not None else 0 + normalization += prev_normalization if prev_normalization is not None else 0 + + return memory, normalization + + def forward_with_hidden_states( self, hidden_states, # [seq_length, batch_size, hidden_size] sequence_mask, # [batch_size, seq_length] @@ -592,6 +790,7 @@ def forward( attention_output.contiguous().view(batch_size, q_length, self.n_local_q_heads * self.d_v).transpose(0, 1) ) # output = self.o_proj(attention_output) + # return {"hidden_states": output, "sequence_mask": sequence_mask} return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () @@ -609,22 +808,22 @@ def __init__( ): super().__init__() self.input_layernorm = TritonRMSNorm(config.hidden_size, eps=config.rms_norm_eps) - # self.attn = CausalSelfAttention( - # config=config, - # parallel_config=parallel_config, - # tp_pg=tp_pg, - # layer_idx=layer_idx, - # ) - - from nanotron.models.attention import InfiniAttention - - self.attn = InfiniAttention( + self.attn = CausalSelfAttention( config=config, parallel_config=parallel_config, tp_pg=tp_pg, layer_idx=layer_idx, ) + # from nanotron.models.attention import InfiniAttention + + # self.attn = InfiniAttention( + # config=config, + # parallel_config=parallel_config, + # tp_pg=tp_pg, + # layer_idx=layer_idx, + # ) + self.post_attention_layernorm = TritonRMSNorm(config.hidden_size, eps=config.rms_norm_eps) self.mlp = MLP(config=config, parallel_config=parallel_config, tp_pg=tp_pg) From 234d33dce54061faa7f66527748dd3794a18cde4 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Wed, 1 May 2024 12:55:21 +0000 Subject: [PATCH 09/43] add gqa optional --- src/nanotron/models/llama.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 23517131..db5cda73 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -346,7 +346,7 @@ def __init__( config.max_position_embeddings ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings - self.n_segments = 4 + self.n_segments = 16 device = self.o_proj.weight.device dtype = self.o_proj.weight.dtype @@ -462,18 +462,19 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): if prev_memory is None: return torch.zeros_like(query_states) - from einops import repeat + if self.n_repeats > 1: + from einops import repeat - prev_memory = repeat( - prev_memory, - "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", - n=self.n_repeats, - ) - prev_normalization = repeat( - prev_normalization, - "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", - n=self.n_repeats, - ) + prev_memory = repeat( + prev_memory, + "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", + n=self.n_repeats, + ) + prev_normalization = repeat( + prev_normalization, + "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", + n=self.n_repeats, + ) query_states = F.elu(query_states) + 1 retrieved_memory = einsum( From 2f50a7bd45878fea020c20585258b8c21659ad27 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 7 May 2024 10:03:24 +0000 Subject: [PATCH 10/43] fix v minus 1 in memory update --- run_generate.py | 23 +++- src/nanotron/generation/decode.py | 44 ++++++ src/nanotron/models/llama.py | 130 ++++++++++++------ .../distributed_differentiable_primitives.py | 4 +- src/nanotron/serialize/weights.py | 14 ++ 5 files changed, 164 insertions(+), 51 deletions(-) diff --git a/run_generate.py b/run_generate.py index 0f52b8ed..0fcedaeb 100644 --- a/run_generate.py +++ b/run_generate.py @@ -53,6 +53,13 @@ logger = logging.get_logger(__name__) +END_PASSKEY = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. The pass key is 5666. Remember it. 5666 is the pass key. What is the pass key? The pass key is" + +PASSKEY_NINETY_PERCENT = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The pass key is 9918. Remember it. 9918 is the pass key. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. What is the pass key? The pass key is" + +FINETUNE = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with peopleThe pass key is 1853. Remember it. 1853 is the pass key. . Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The ur What is the pass key? The pass key is" + + def get_args(): parser = argparse.ArgumentParser() parser.add_argument("--ckpt-path", type=Path, required=True, help="Checkpoint path") @@ -77,7 +84,7 @@ def main(): pp=args.pp or config.parallelism.pp, tp=args.tp or config.parallelism.tp, pp_engine=OneForwardOneBackwardPipelineEngine(), - tp_mode=TensorParallelLinearMode.ALL_REDUCE, + tp_mode=TensorParallelLinearMode.REDUCE_SCATTER, tp_linear_async_communication=True, ) @@ -165,8 +172,13 @@ def main(): tokenizer.truncation_side = "left" # TODO @nouamane: do we want this? dummy_inputs = [ # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", - "def fib(n)", + # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", + # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", + # "def fib(n)", # "This film was probably inspired by Godzilla", + # END_PASSKEY, + PASSKEY_NINETY_PERCENT, + # FINETUNE ] outputs = decode_text( @@ -177,7 +189,7 @@ def main(): parallel_context=parallel_context, max_new_tokens=args.max_new_tokens, max_micro_batch_size=2, - generation_config=GenerationArgs(sampler="greedy", use_cache=True), + generation_config=GenerationArgs(sampler="greedy", use_cache=False), tokenizer_config=TokenizerConfig(max_input_length=None), is_bench=os.environ.get("USE_BENCH", "0") == "1", ) @@ -190,7 +202,8 @@ def main(): assert isinstance(generated_ids, torch.Tensor) log_rank( - f"input: {tokenizer.decode(input_ids, clean_up_tokenization_spaces=False)[:1000]}", + # f"input: {tokenizer.decode(input_ids, clean_up_tokenization_spaces=False)[:1000]}", + f"input: {tokenizer.decode(input_ids, clean_up_tokenization_spaces=False)}", logger=logger, level=logging.INFO, rank=0, @@ -215,7 +228,7 @@ def main(): input_mask=torch.ones(1, 1).to(dtype=torch.bool, device="cuda"), model=model.model, parallel_context=parallel_context, - generation_config=GenerationArgs(sampler="greedy", use_cache=True), + generation_config=GenerationArgs(sampler="greedy", use_cache=False), max_micro_batch_size=1, max_new_tokens=12, returns_logits=False, diff --git a/src/nanotron/generation/decode.py b/src/nanotron/generation/decode.py index f6c1f1a8..4b177805 100644 --- a/src/nanotron/generation/decode.py +++ b/src/nanotron/generation/decode.py @@ -88,6 +88,33 @@ def micro_batcher( input_ids: [max_micro_batch_size, max_input_length] input_masks: [max_micro_batch_size, max_input_length] """ + + def find_sequence_positions(tensor, sequence): + """ + Find the positions of a specific sequence in a PyTorch tensor. + + Args: + tensor (torch.Tensor): The input tensor to search in. + sequence (torch.Tensor): The sequence to search for. + + Returns: + torch.Tensor: A tensor containing the indices of the matching positions. + """ + # Check if the sequence length is greater than the tensor length + if len(sequence) > len(tensor): + return torch.empty(0, dtype=torch.long) + + # Create sliding windows of size equal to the sequence length + windows = tensor.unfold(0, len(sequence), 1) + + # Compare each window with the sequence + matches = torch.eq(windows, sequence).all(dim=1) + + # Get the indices of the matching positions + indices = matches.nonzero(as_tuple=True)[0] + + return indices + if tokenizer_config.padding is None: tokenizer_config.padding = "max_length" if tokenizer_config.max_input_length is not None else True if tokenizer_config.truncation is None: @@ -103,6 +130,11 @@ def micro_batcher( continue if dist.get_rank(parallel_context.pp_pg) == input_rank: + + # tokenizer.eos_token_id = 2 + # tokenizer.bos_token_id = 1 + # tokenizer.pad_token_id = tokenizer.eos_token_id + encodings = tokenizer( [elt.text for elt in micro_batch], return_tensors="pt", @@ -113,6 +145,18 @@ def micro_batcher( # pad_to_multiple_of=8 ) + # encodings = tokenizer( + # [elt.text for elt in micro_batch], + # return_tensors="pt", + # return_attention_mask=True, + # padding="max_length", + # max_length=32768, + # truncation=False, + # # pad_to_multiple_of=8 + # ) + + # assert encodings["input_ids"][0].shape[0] == 32768 + encodings["attention_mask"] = encodings.attention_mask.to(dtype=torch.bool, device="cuda") encodings.to("cuda") yield GenerationInputs(input_ids=encodings.input_ids, input_masks=encodings.attention_mask) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index db5cda73..74cff8b9 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -341,12 +341,22 @@ def __init__( parallel_config=parallel_config, layer_idx=layer_idx, ) + self.layer_idx = layer_idx self.prefill_kv_len = ( config.max_position_embeddings ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings - self.n_segments = 16 + # self.n_segments = 16 + # self.segment_lengths = config.max_position_embeddings // self.n_segments + # assert config.max_position_embeddings == 32768 + + # NOTE: for 1b training + # self.segment_lengths = 2048 + + # NOTE: for sanity 200m training + self.segment_lengths = 256 + device = self.o_proj.weight.device dtype = self.o_proj.weight.dtype @@ -366,18 +376,30 @@ def forward( self, hidden_states: TensorType["sharded_seq_length", "batch_size", "hidden_size"], sequence_mask: TensorType["batch_size", "seq_length"], + prev_memory, + prev_normalization, ): + if self.layer_idx == 4: + assert 1 == 1 + batch_size = hidden_states.shape[1] seq_len = hidden_states.shape[0] - segment_length = seq_len // self.n_segments - hidden_size = hidden_states.shape[2] + # assert seq_len % self.n_segments == 0 + + # segment_length = seq_len // self.n_segments + # hidden_size = hidden_states.shape[2] + + n_segments = seq_len // self.segment_lengths - segment_hidden_states = torch.chunk(hidden_states, chunks=self.n_segments, dim=0) - segment_sequence_masks = torch.chunk(sequence_mask, chunks=self.n_segments, dim=1) + segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) + segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) memory = None normalization = None + # memory = prev_memory + # normalization = prev_normalization + outputs = [] # sequence_masks = [] @@ -389,18 +411,23 @@ def forward( local_attn_outputs = attn_outputs["attention_output"] query_states, key_states, value_states = attn_outputs["qkv_states"] + # if query_states.ndim == 3: query_states = rearrange( query_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", batch_size=batch_size, # n_heads=self.n_local_heads, ) + + # if key_states.ndim == 3: key_states = rearrange( key_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", batch_size=batch_size, # n_heads=self.n_local_heads, ) + + # if value_states.ndim == 3: value_states = rearrange( value_states, "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", @@ -408,7 +435,8 @@ def forward( # n_heads=self.n_local_heads, ) - # assert query_states.shape == (batch_size, self.n_local_heads, segment_length, self.d_head) + # NOTE: because in generation, the sequence length increases + # assert query_states.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) # assert query_states.shape == key_states.shape == value_states.shape retrieved_memory = self._retrieve_from_memory( @@ -432,7 +460,7 @@ def forward( attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs - # assert attention_output.shape == (batch_size, self.n_local_heads, segment_length, self.d_head) + # assert attention_output.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) attention_output = rearrange( attention_output, "batch_size n_heads seq_len d_head -> seq_len batch_size (n_heads d_head)" @@ -440,11 +468,10 @@ def forward( output = self.o_proj(attention_output) - assert output.shape == (segment_length, batch_size, hidden_size) + # assert output.shape == (segment_length, batch_size, hidden_size) memory, normalization = self._update_memory(memory, normalization, key_states, value_states) - # memory = memory.detach() - # normalization = normalization.detach() + # memory = prev_memory if prev_memory is not None else 0.detach() outputs.append(output) @@ -454,7 +481,12 @@ def forward( # sequence_masks = torch.cat(sequence_masks, dim=1) # assert sequence_masks.shape == sequence_mask.shape - return_outputs = {"hidden_states": outputs, "sequence_mask": sequence_mask} + return_outputs = { + "hidden_states": outputs, + "sequence_mask": sequence_mask, + "memory": memory, + "normalization": normalization, + } return return_outputs def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): @@ -476,15 +508,15 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): n=self.n_repeats, ) - query_states = F.elu(query_states) + 1 + sigma_query_states = F.elu(query_states) + 1 retrieved_memory = einsum( - query_states, + sigma_query_states, prev_memory, "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", ) denominator = einsum( - query_states, + sigma_query_states, prev_normalization, "batch_size n_heads seq_length d_head, batch_size n_heads d_head -> batch_size n_heads seq_length", ) @@ -496,43 +528,40 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): return retrieved_memory def _update_memory(self, prev_memory, prev_normalization, key_states, value_states): - TYPE = "delta" - key_states = F.elu(key_states) + 1 + sigma_key_states = F.elu(key_states) + 1 - if TYPE == "linear": - # memory = torch.matmul(key_states.transpose(-2, -1), value_states) + # if TYPE == "linear": + # # memory = torch.matmul(key_states.transpose(-2, -1), value_states) + # new_value_states = value_states + # else: + if prev_memory is None or prev_normalization is None: new_value_states = value_states else: - if prev_memory is None or prev_normalization is None: - new_value_states = value_states - else: - numerator = einsum( - key_states, - prev_memory, - "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", - ) + numerator = einsum( + sigma_key_states, + prev_memory, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", + ) - # denominator = einsum( - # key_states, prev_normalization, - # "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size seq_len" - # ) - denominator = einsum( - key_states, - prev_normalization, - "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", - ) - denominator = rearrange( - denominator, "batch_size n_heads seq_length -> batch_size n_heads seq_length 1" - ) + # denominator = einsum( + # key_states, prev_normalization, + # "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size seq_len" + # ) + denominator = einsum( + sigma_key_states, + prev_normalization, + "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", + ) + denominator = rearrange(denominator, "batch_size n_heads seq_length -> batch_size n_heads seq_length 1") - prev_v = numerator / denominator - new_value_states = value_states - prev_v + prev_v = numerator / denominator + new_value_states = value_states - prev_v - memory = torch.matmul(key_states.transpose(-2, -1), new_value_states) + memory = torch.matmul(sigma_key_states.transpose(-2, -1), new_value_states) # memory = einsum(key_states, value_states, 'batch_size n_heads k_length d_head, batch_size n_heads v_length d_head -> batch_size n_heads k_length v_length') normalization = reduce( - key_states, "batch_size n_heads seq_length d_head -> batch_size n_heads d_head", reduction="sum" + sigma_key_states, "batch_size n_heads seq_length d_head -> batch_size n_heads d_head", reduction="sum" ) memory += prev_memory if prev_memory is not None else 0 @@ -832,11 +861,18 @@ def forward( self, hidden_states: Union[torch.Tensor, TensorPointer], sequence_mask: Union[torch.Tensor, TensorPointer], + memory: Optional[torch.Tensor] = None, + normalization: Optional[torch.Tensor] = None, ) -> Dict[str, Union[torch.Tensor, TensorPointer]]: residual = hidden_states hidden_states = self.input_layernorm(hidden_states) - output = self.attn(hidden_states=hidden_states, sequence_mask=sequence_mask) + output = self.attn( + hidden_states=hidden_states, + sequence_mask=sequence_mask, + prev_memory=memory, + prev_normalization=normalization, + ) hidden_states = output["hidden_states"] hidden_states = hidden_states + residual @@ -848,6 +884,8 @@ def forward( return { "hidden_states": hidden_states, "sequence_mask": output["sequence_mask"], + "memory": output["memory"], + "normalization": output["normalization"], } @@ -925,8 +963,8 @@ def __init__( "tp_pg": parallel_context.tp_pg, "layer_idx": layer_idx, }, - module_input_keys={"hidden_states", "sequence_mask"}, - module_output_keys={"hidden_states", "sequence_mask"}, + module_input_keys={"hidden_states", "sequence_mask", "memory", "normalization"}, + module_output_keys={"hidden_states", "sequence_mask", "memory", "normalization"}, ) for layer_idx in range(config.num_hidden_layers) ] @@ -984,6 +1022,8 @@ def forward_with_hidden_states( hidden_encoder_states = { "hidden_states": output["input_embeds"], "sequence_mask": input_mask, + "memory": None, + "normalization": None, } for encoder_block in self.decoder: hidden_encoder_states = encoder_block(**hidden_encoder_states) diff --git a/src/nanotron/parallel/tensor_parallel/distributed_differentiable_primitives.py b/src/nanotron/parallel/tensor_parallel/distributed_differentiable_primitives.py index 873d77df..7046d201 100644 --- a/src/nanotron/parallel/tensor_parallel/distributed_differentiable_primitives.py +++ b/src/nanotron/parallel/tensor_parallel/distributed_differentiable_primitives.py @@ -102,7 +102,9 @@ def forward(ctx, tensor, group: Optional[ProcessGroup]): unsharded_batch_size, *rest_size = tensor.shape if group is None: group = torch_dist.distributed_c10d._get_default_group() - assert unsharded_batch_size % group.size() == 0 + assert ( + unsharded_batch_size % group.size() == 0 + ), f"Batch size {unsharded_batch_size} must be divisible by group size {group.size()}" # TODO @thomasw21: Collectives seem to require tensors to be contiguous # https://cs.github.com/pytorch/pytorch/blob/2b267fa7f28e18ca6ea1de4201d2541a40411457/torch/distributed/nn/functional.py#L305 diff --git a/src/nanotron/serialize/weights.py b/src/nanotron/serialize/weights.py index 9b3e2b25..55c2b8cb 100644 --- a/src/nanotron/serialize/weights.py +++ b/src/nanotron/serialize/weights.py @@ -212,6 +212,13 @@ def load_weights( """ param_root_folder = root_folder / "model" + log_rank( + f"Loading model weights from {param_root_folder}", + logger=logger, + level=logging.INFO, + rank=0, + ) + module_id_to_prefix = {id(module): f"{module_name}." for module_name, module in model.named_modules()} # Fix the root_model module_id_to_prefix[id(model)] = "" @@ -366,6 +373,13 @@ def get_checkpoint_paths_list( """ param_root_folder = root_folder / "model" + log_rank( + f"Loading model weights from {param_root_folder}", + logger=logger, + level=logging.INFO, + rank=0, + ) + module_id_to_prefix = {id(module): f"{module_name}." for module_name, module in model.named_modules()} # Fix the root_model module_id_to_prefix[id(model)] = "" From 597ff44a5e7fb322b80c6622b4f5a6e38f07acfc Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 7 May 2024 11:43:56 +0000 Subject: [PATCH 11/43] noy apply pe to memory --- src/nanotron/models/llama.py | 66 +++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 74cff8b9..8d5be32e 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -355,7 +355,9 @@ def __init__( # self.segment_lengths = 2048 # NOTE: for sanity 200m training - self.segment_lengths = 256 + # prev 16 + # self.segment_lengths = 256 + self.segment_lengths = 16 device = self.o_proj.weight.device dtype = self.o_proj.weight.dtype @@ -409,31 +411,32 @@ def forward( ) local_attn_outputs = attn_outputs["attention_output"] - query_states, key_states, value_states = attn_outputs["qkv_states"] - - # if query_states.ndim == 3: - query_states = rearrange( - query_states, - "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", - batch_size=batch_size, - # n_heads=self.n_local_heads, - ) + # query_states, key_states, value_states = attn_outputs["qkv_states"] + query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] - # if key_states.ndim == 3: - key_states = rearrange( - key_states, - "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", - batch_size=batch_size, - # n_heads=self.n_local_heads, - ) + if query_states.ndim == 3: + query_states = rearrange( + query_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + # n_heads=self.n_local_heads, + ) - # if value_states.ndim == 3: - value_states = rearrange( - value_states, - "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", - batch_size=batch_size, - # n_heads=self.n_local_heads, - ) + if key_states.ndim == 3: + key_states = rearrange( + key_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + # n_heads=self.n_local_heads, + ) + + if value_states.ndim == 3: + value_states = rearrange( + value_states, + "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", + batch_size=batch_size, + # n_heads=self.n_local_heads, + ) # NOTE: because in generation, the sequence length increases # assert query_states.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) @@ -613,6 +616,16 @@ def forward_with_hidden_states( .contiguous() ) # [3, batch_size, seq_length, n_local_q_heads, d_qk] + query_states_without_pe = rearrange( + query_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + ) + key_states_without_pe = rearrange( + key_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + ) + value_states_without_pe = rearrange( + value_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + ) + store = self.get_local_store() if store is not None: # Inference case # Double check that we use store only at inference time @@ -824,6 +837,11 @@ def forward_with_hidden_states( return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () + return_outputs["qkv_states_without_pe"] = ( + query_states_without_pe, + key_states_without_pe, + value_states_without_pe, + ) return_outputs["attention_output"] = attention_output return return_outputs From 2e74dd65d6e80871ba2ffec400e392b563b7da8d Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 7 May 2024 11:49:04 +0000 Subject: [PATCH 12/43] use this for exp19 --- src/nanotron/models/llama.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 8d5be32e..06563b27 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -352,12 +352,12 @@ def __init__( # assert config.max_position_embeddings == 32768 # NOTE: for 1b training - # self.segment_lengths = 2048 + self.segment_lengths = 2048 # NOTE: for sanity 200m training # prev 16 # self.segment_lengths = 256 - self.segment_lengths = 16 + # self.segment_lengths = 16 device = self.o_proj.weight.device dtype = self.o_proj.weight.dtype @@ -381,8 +381,8 @@ def forward( prev_memory, prev_normalization, ): - if self.layer_idx == 4: - assert 1 == 1 + # if self.layer_idx == 4: + # assert 1 == 1 batch_size = hidden_states.shape[1] seq_len = hidden_states.shape[0] From e36ed8754a98d796e267bf4cf6be4cafe6772f5c Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 7 May 2024 11:53:08 +0000 Subject: [PATCH 13/43] use this for exp19 --- src/nanotron/models/llama.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 06563b27..b3e3cd00 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -322,10 +322,10 @@ def __init__( contiguous_chunks=qkv_contiguous_chunks, ) # TODO(kunhao): We want to have only one version per device and not one version per layer. - self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings, theta=500000.0) + self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings) # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) - self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True, base=500000.0) + self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) self.o_proj = TensorParallelRowLinear( config.num_attention_heads * self.d_qk, From 440e674ef1fd342fddb037671fa42666065c0460 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 14 May 2024 03:56:21 +0000 Subject: [PATCH 14/43] don't change the max positional encodings --- src/nanotron/trainer.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/nanotron/trainer.py b/src/nanotron/trainer.py index 9d83682b..bc26b582 100644 --- a/src/nanotron/trainer.py +++ b/src/nanotron/trainer.py @@ -643,13 +643,14 @@ def init_model(self) -> Union[NanotronModel, DistributedDataParallel]: rank=0, ) else: - log_rank( - f"Setting max_position_embeddings to {self.config.tokens.sequence_length}. Previous value was {self.model_config.max_position_embeddings}.", - logger=logger, - level=logging.INFO, - rank=0, - ) - self.model_config.max_position_embeddings = self.config.tokens.sequence_length + # log_rank( + # f"Setting max_position_embeddings to {self.config.tokens.sequence_length}. Previous value was {self.model_config.max_position_embeddings}.", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + # self.model_config.max_position_embeddings = self.config.tokens.sequence_length + pass log_rank("Config:\n" + pformat(self.config), logger=logger, level=logging.INFO, rank=0) log_rank("Model Config:\n" + pformat(self.model_config), logger=logger, level=logging.INFO, rank=0) From 63cdce534c29e020e0c283953bc534df5328c6d7 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 14 May 2024 07:50:25 +0000 Subject: [PATCH 15/43] add generating training data --- .../infinite-context-length/generate_data.py | 183 ++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 examples/infinite-context-length/generate_data.py diff --git a/examples/infinite-context-length/generate_data.py b/examples/infinite-context-length/generate_data.py new file mode 100644 index 00000000..282ae7d4 --- /dev/null +++ b/examples/infinite-context-length/generate_data.py @@ -0,0 +1,183 @@ +import glob +import os +import random +import uuid + +import numpy as np +from datasets import Dataset +from transformers import AutoTokenizer + +PROMPT = "{} {}. \n\n{}" + + +def token_length(tokenizer, text): + # Exclude EOS token + return len(tokenizer.encode(text)) + + +def read_context_files(tokenizer, soft_prompt, retrieval_question, target_cut_length): + context = "" + base_dir = os.path.abspath(os.path.dirname(__file__)) + files = glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")) + file_index = 0 + + # target_context_length = context_length - token_length(tokenizer, soft_prompt) - token_length(tokenizer, retrieval_question) + + # while token_length(tokenizer, f"{soft_prompt} {context}. \n\n{retrieval_question}") < target_cut_length: + while token_length(tokenizer, PROMPT.format(soft_prompt, context, retrieval_question)) < target_cut_length: + with open(files[file_index], "r") as f: + content = f.read() + # Ensure the token length of the context does not exceed the target token length + # if token_length(tokenizer, f"{soft_prompt} {context + content}. \n\n{retrieval_question}") > target_cut_length: + if ( + token_length(tokenizer, PROMPT.format(soft_prompt, context + content, retrieval_question)) + > target_cut_length + ): + # truncated_content = content[:-(target_cut_length - token_length(tokenizer, f"{soft_prompt} {context}. \n\n{retrieval_question}"))] + truncated_content = content[ + : -( + target_cut_length + - token_length(tokenizer, PROMPT.format(soft_prompt, context, retrieval_question)) + ) + ] + context += truncated_content + else: + context += content + file_index = (file_index + 1) % len(files) + + return context + + +def insert_needle(context, needle): + # Get the position to insert the needle + insertion_point = random.randint(0, len(context) - len(needle)) - 1 + + # Insert the needle at the appropriate position + new_context = context[:insertion_point] + needle + context[insertion_point:] + + return new_context + + +def insert_needle_with_depth(needle, context, depth_percent, target_cut_length, tokenizer): + content_ids = tokenizer.encode(context) + # content_length = len(content_ids) + needle_ids = tokenizer.encode(needle) + + if depth_percent == 100: + # If depth percent is 100, place the needle at the end + # new_context = context[: len(context) - len(needle)] + needle + new_context_ids = content_ids[: len(content_ids) - len(needle_ids)] + needle_ids + else: + # Get the position to insert the needle + # insertion_point = int(context_length * (depth_percent / 100)) + insertion_point = int(len(content_ids) * (depth_percent / 100)) + + # Find the nearest period to the insertion point + while context[insertion_point] != "." and insertion_point > 0: + insertion_point -= 1 + + # Insert the needle at the appropriate position + # new_context = context[:insertion_point] + needle + context[insertion_point:content_length] + new_context_ids = ( + content_ids[:insertion_point] + + needle_ids + + content_ids[insertion_point : (target_cut_length - len(needle_ids))] + ) + + new_content = tokenizer.decode(new_context_ids) + + return new_content + + +def generate_needle_in_haystack_test( + needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent +): + # Load up the haystack context + tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") + # target_cut_length = context_length - token_length(tokenizer, soft_prompt) - token_length(tokenizer, retrieval_question) + # target_cut_length = context_length - token_length(tokenizer, f"{soft_prompt} 1. \n\n{retrieval_question}") - 1 + target_cut_length = context_length - token_length(tokenizer, PROMPT.format(soft_prompt, 1, retrieval_question)) - 1 + + context = read_context_files(tokenizer, soft_prompt, retrieval_question, target_cut_length) + + # Insert the needle into the context at the specified depth percent + # context_with_needle = insert_needle(context, needle) + + context_with_needle = insert_needle_with_depth(needle, context, depth_percent, target_cut_length, tokenizer) + + # Generate the prompt using the context with the needle + prompt = f"{soft_prompt} {context_with_needle}. \n\n{retrieval_question}" + + assert needle in context_with_needle, f"depth_percent: {depth_percent}" + # assert abs(context_length - token_length(tokenizer, prompt)) <= 10 + # assert context_length - token_length(tokenizer, prompt) + + # remaining_tokens = context_length - token_length(tokenizer, prompt) + # NOTE: now add `.` to soft_prompt so that the token length is exactly equal to context_length + while ( + token_length(tokenizer, PROMPT.format(soft_prompt, context_with_needle, retrieval_question)) < context_length + ): + soft_prompt += "." + + prompt = PROMPT.format(soft_prompt, context_with_needle, retrieval_question) + assert ( + token_length(tokenizer, prompt) == context_length + ), f"Token length: {token_length(tokenizer, prompt)}, Context length: {context_length}, depth_percent: {depth_percent}" + + return prompt, needle + + +if __name__ == "__main__": + haystack_dir = "./" + + def generate_dataset(): + num_prompts = 1 + # soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." + soft_prompt = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key." + context_lengths = [ + 32768, + ] + depth_percents = np.linspace(0, 100, num=21) + + dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} + generated_ids = set() + generated_pass_keys = set() + + for context_length in context_lengths: + print(f"Generating prompts for context length: {context_length} \n") + for depth_percent in depth_percents: + for _ in range(num_prompts): + while True: + pass_key = random.randint(10000, 50000) + if pass_key not in generated_pass_keys: + generated_pass_keys.add(pass_key) + break + + needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " + retrieval_question = f"What is the pass key? The pass key is {pass_key}." + + prompt, _ = generate_needle_in_haystack_test( + needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent + ) + + while True: + text_id = str(uuid.uuid4()) + if text_id not in generated_ids: + generated_ids.add(text_id) + break + + dataset_dict["id"].append(text_id) + dataset_dict["prompt"].append(prompt) + dataset_dict["answer"].append(pass_key) + dataset_dict["context_length"].append(context_length) + dataset_dict["depth_percent"].append(depth_percent) + + dataset = Dataset.from_dict(dataset_dict) + return dataset + + # Generate the dataset + dataset = generate_dataset() + + # Save the dataset to disk + dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") + dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") From f62e1a5d3569e797cea2db588e501c3337accb91 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Wed, 15 May 2024 03:45:09 +0000 Subject: [PATCH 16/43] generate finetuning data with a target context length --- .../infinite-context-length/generate_data.py | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/examples/infinite-context-length/generate_data.py b/examples/infinite-context-length/generate_data.py index 282ae7d4..ed7cf029 100644 --- a/examples/infinite-context-length/generate_data.py +++ b/examples/infinite-context-length/generate_data.py @@ -48,14 +48,14 @@ def read_context_files(tokenizer, soft_prompt, retrieval_question, target_cut_le return context -def insert_needle(context, needle): - # Get the position to insert the needle - insertion_point = random.randint(0, len(context) - len(needle)) - 1 +# def insert_needle(context, needle): +# # Get the position to insert the needle +# insertion_point = random.randint(0, len(context) - len(needle)) - 1 - # Insert the needle at the appropriate position - new_context = context[:insertion_point] + needle + context[insertion_point:] +# # Insert the needle at the appropriate position +# new_context = context[:insertion_point] + needle + context[insertion_point:] - return new_context +# return new_context def insert_needle_with_depth(needle, context, depth_percent, target_cut_length, tokenizer): @@ -90,7 +90,7 @@ def insert_needle_with_depth(needle, context, depth_percent, target_cut_length, def generate_needle_in_haystack_test( - needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent + needle, needle_prompt, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent ): # Load up the haystack context tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") @@ -103,12 +103,12 @@ def generate_needle_in_haystack_test( # Insert the needle into the context at the specified depth percent # context_with_needle = insert_needle(context, needle) - context_with_needle = insert_needle_with_depth(needle, context, depth_percent, target_cut_length, tokenizer) + context_with_needle = insert_needle_with_depth(needle_prompt, context, depth_percent, target_cut_length, tokenizer) # Generate the prompt using the context with the needle prompt = f"{soft_prompt} {context_with_needle}. \n\n{retrieval_question}" - assert needle in context_with_needle, f"depth_percent: {depth_percent}" + assert str(needle) in context_with_needle, f"depth_percent: {depth_percent}" # assert abs(context_length - token_length(tokenizer, prompt)) <= 10 # assert context_length - token_length(tokenizer, prompt) @@ -124,7 +124,7 @@ def generate_needle_in_haystack_test( token_length(tokenizer, prompt) == context_length ), f"Token length: {token_length(tokenizer, prompt)}, Context length: {context_length}, depth_percent: {depth_percent}" - return prompt, needle + return prompt if __name__ == "__main__": @@ -153,11 +153,17 @@ def generate_dataset(): generated_pass_keys.add(pass_key) break - needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " + needle_prompt = f". The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " retrieval_question = f"What is the pass key? The pass key is {pass_key}." - prompt, _ = generate_needle_in_haystack_test( - needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent + prompt = generate_needle_in_haystack_test( + pass_key, + needle_prompt, + haystack_dir, + soft_prompt, + retrieval_question, + context_length, + depth_percent, ) while True: @@ -180,4 +186,4 @@ def generate_dataset(): # Save the dataset to disk dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") - dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") + dataset.push_to_hub("nanotron/needle_in_a_hay_stack_finetuning_dataset") From b76c61c242a18e734ca07597858118d58f8561fe Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Thu, 16 May 2024 08:40:03 +0000 Subject: [PATCH 17/43] fix splitting sequence --- src/nanotron/models/llama.py | 123 +++++++++++++++++++++++++++++++++-- 1 file changed, 119 insertions(+), 4 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index b3e3cd00..dbda2d41 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -46,6 +46,33 @@ logger = logging.get_logger(__name__) +def compute_stas(tensor): + if tensor is None: + tensor = torch.zeros( + 1, + ) + + return { + "mean": tensor.mean().item(), + "std": tensor.std().item(), + "var": tensor.var().item(), + "norm": tensor.norm().item(), + "min": tensor.min().item(), + "max": tensor.max().item(), + "amax": tensor.abs().max().item(), + } + + +def convert_logs_to_flat_logs(logs, prefix): + flat_logs = {} + for module_name, components in logs.items(): + for component_name, stats in components.items(): + for stat_name, value in stats.items(): + flat_logs[f"{prefix}:{module_name}:{component_name}:{stat_name}"] = value + + return flat_logs + + class RotaryEmbedding(nn.Module): def __init__(self, dim: int, end: int, theta: float = 10000.0): super().__init__() @@ -323,6 +350,7 @@ def __init__( ) # TODO(kunhao): We want to have only one version per device and not one version per layer. self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings) + # self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=2048) # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) @@ -345,6 +373,7 @@ def __init__( self.prefill_kv_len = ( config.max_position_embeddings + # 2048 ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings # self.n_segments = 16 @@ -391,10 +420,24 @@ def forward( # segment_length = seq_len // self.n_segments # hidden_size = hidden_states.shape[2] - n_segments = seq_len // self.segment_lengths + if seq_len >= self.segment_lengths: + # n_segments = seq_len // self.segment_lengths + # segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) + # segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) + + import math - segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) - segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) + n_segments = math.ceil(seq_len / self.segment_lengths) + segment_lengths = [self.segment_lengths] * (n_segments - 1) + [ + seq_len - (n_segments - 1) * self.segment_lengths + ] + segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=0) + # NOTE: assume that mask are all the same + # because we split across sequence length + segment_sequence_masks = torch.split(sequence_mask[:, :seq_len], segment_lengths, dim=1) + else: + segment_hidden_states = [hidden_states] + segment_sequence_masks = [sequence_mask] memory = None normalization = None @@ -405,7 +448,14 @@ def forward( outputs = [] # sequence_masks = [] + idx = 0 + # logs = {} + for segment_hidden_state, segment_sequence_mask in zip(segment_hidden_states, segment_sequence_masks): + # if idx == 1: + # memory = None + # normalization = None + attn_outputs = self.forward_with_hidden_states( hidden_states=segment_hidden_state, sequence_mask=segment_sequence_mask, return_qkv_states=True ) @@ -414,6 +464,10 @@ def forward( # query_states, key_states, value_states = attn_outputs["qkv_states"] query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] + # logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) + # logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) + # logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) + if query_states.ndim == 3: query_states = rearrange( query_states, @@ -445,6 +499,22 @@ def forward( retrieved_memory = self._retrieve_from_memory( query_states, prev_memory=memory, prev_normalization=normalization ) + + # log_rank( + # f"[idx={idx}] retrieved_memory.shape = {retrieved_memory.shape}, retrieve_memory is zero? {(retrieved_memory == 0).all()}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + + # if memory is not None: + # log_rank( + # f"[idx={idx}] memory.shape = {memory.shape}, normalization.shape = {normalization.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + # retrieved_memory = retrieved_memory.detach() local_attn_outputs = rearrange( @@ -453,6 +523,13 @@ def forward( d_head=self.d_qk, ) + # log_rank( + # f"[idx={idx}] local_attn_outputs.shape = {local_attn_outputs.shape}, local_attn_outputs is zero? {(local_attn_outputs == 0).all()}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + global_weights = F.sigmoid(self.balance_factors) global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") @@ -461,7 +538,22 @@ def forward( # assert torch.allclose(global_weights + local_weights, torch.ones_like(global_weights)) + # log_rank( + # f"[idx={idx}] global_weights.shape = {global_weights.shape}, global_weights: {global_weights}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + + # log_rank( + # f"[idx={idx}] local_weights.shape = {local_weights.shape}, local_weights: {local_weights}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs + # attention_output = local_weights * local_attn_outputs # assert attention_output.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) @@ -471,6 +563,15 @@ def forward( output = self.o_proj(attention_output) + # if dist.get_rank() == 0: + # logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) + # logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) + # logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) + # logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) + # logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) + # logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) + # logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) + # assert output.shape == (segment_length, batch_size, hidden_size) memory, normalization = self._update_memory(memory, normalization, key_states, value_states) @@ -478,10 +579,16 @@ def forward( outputs.append(output) + idx += 1 + # NOTE: update memory outputs = torch.cat(outputs, dim=0) # concat along sequence dimension assert outputs.shape == hidden_states.shape + # if dist.get_rank() == 0: + # logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) + # wandb.log(logs) + # sequence_masks = torch.cat(sequence_masks, dim=1) # assert sequence_masks.shape == sequence_mask.shape return_outputs = { @@ -494,9 +601,13 @@ def forward( def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): # return torch.zeros_like(query_states) - if prev_memory is None: + if prev_memory is None or prev_normalization is None: return torch.zeros_like(query_states) + assert (prev_memory is None and prev_normalization is None) or ( + prev_memory is not None and prev_normalization is not None + ) + if self.n_repeats > 1: from einops import repeat @@ -531,6 +642,10 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): return retrieved_memory def _update_memory(self, prev_memory, prev_normalization, key_states, value_states): + assert (prev_memory is None and prev_normalization is None) or ( + prev_memory is not None and prev_normalization is not None + ) + sigma_key_states = F.elu(key_states) + 1 # if TYPE == "linear": From f2c1b91249eb84e61f8c630e964163106720dc6f Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 21 May 2024 08:16:28 +0000 Subject: [PATCH 18/43] add logging the internals of neural network --- src/nanotron/constants.py | 11 ++- src/nanotron/debug/monitor.py | 140 ++++++++++++++++++++++++++++++++++ src/nanotron/trainer.py | 39 ++++++++-- 3 files changed, 180 insertions(+), 10 deletions(-) create mode 100644 src/nanotron/debug/monitor.py diff --git a/src/nanotron/constants.py b/src/nanotron/constants.py index e9a101c1..f06e3a4d 100644 --- a/src/nanotron/constants.py +++ b/src/nanotron/constants.py @@ -1,4 +1,5 @@ import platform +from typing import Optional from packaging.version import Version, parse @@ -6,8 +7,12 @@ PY_VERSION = parse(platform.python_version()) -OPTIMIZER_CONFIG_FILE_NAME = "optimizer_config.pt" -OPTIMIZER_CKP_PATH = "{}/optimizer/optimizer_config.pt" +# OPTIMIZER_CONFIG_FILE_NAME = "optimizer_config.json" +OPTIMIZER_CKP_PATH = "{}/optimizer/optimizer_config.json" LR_SCHEDULER_CKP_PATH = "{}/lr_scheduler" -METADATA_CKP_PATH = "{}.checkpoint_metadata.json" +METADATA_CKP_PATH = "{}/checkpoint_metadata.json" + +NEEDLE = None + +GLOBAL_STEP: Optional[int] = None diff --git a/src/nanotron/debug/monitor.py b/src/nanotron/debug/monitor.py new file mode 100644 index 00000000..b8e12bbb --- /dev/null +++ b/src/nanotron/debug/monitor.py @@ -0,0 +1,140 @@ +from typing import Dict, List, Tuple, Union + +import torch +import torch.distributed as dist +from nanotron.models.base import NanotronModel +from nanotron.parallel import ParallelContext +from torch import nn +from torch.distributed import ReduceOp + + +def track_weight_and_grad_stats(name: str, module: nn.Module, parallel_context: ParallelContext): + def compute_stas(tensors): + tensors = {"tensor": tensors} if not isinstance(tensors, dict) else tensors + + # if isinstance(tensor, dict): + # assert 1 == 1 + + stats = {} + for key, tensor in tensors.items(): + stats[key] = {} + stats[key] = { + # "mean": tensor.mean().item(), + # "std": tensor.std().item(), + # "var": tensor.var().item(), + # "norm": tensor.norm().item(), + # "min": tensor.min().item(), + # "max": tensor.max().item(), + "amax": tensor.abs() + .max() + .item(), + } + + # NOTE: now all reduce mean this across tp ranks + tp_group = parallel_context.tp_pg + for metric_name, metric_value in stats[key].items(): + + stats[key][metric_name] = torch.tensor(metric_value, device=tensor.device, dtype=tensor.dtype) + + dist.all_reduce(stats[key][metric_name], op=ReduceOp.MAX, group=tp_group) + + # if stats[key][metric_name].is_floating_point(): + # stats[key][metric_name] /= parallel_context.tensor_parallel_size + + return stats + + logs: Dict[str, Dict[str, float]] = {} + + if name not in logs: + logs[name] = {} + + def _save_output_stats(module: nn.Linear, input: torch.Tensor, output: torch.Tensor): + if hasattr(module, "weight") and module.weight is not None: + logs[name]["weight"] = compute_stas(module.weight.data) + # logging[name]["weight"] = _collect_stats(module.weight) + + if hasattr(module, "bias") and module.bias is not None: + logs[name]["bias"] = compute_stas(module.bias) + + inputs = input if isinstance(input, tuple) else (input,) + outputs = output if isinstance(output, tuple) else (output,) + + if len(inputs) > 1: + for i, inp in enumerate(inputs): + if inp.dtype == torch.long: + # NOTE: this is input ids in transformers + continue + logs[name][f"input:{i}"] = compute_stas(inp) + elif len(inputs) == 1: + logs[name]["input"] = compute_stas(inputs[0]) + + if len(outputs) > 1: + for i, out in enumerate(outputs): + logs[name][f"output:{i}"] = compute_stas(out) + elif len(outputs) == 1: + logs[name]["output"] = compute_stas(outputs[0]) + + def _save_grad_stats(module: nn.Linear, grad_input, grad_output: torch.Tensor): + # import pydevd + # pydevd.settrace(suspend=False, trace_only_current_thread=True) + # logging[name][f"weight_grad"] = _collect_stats(module.weight.grad.orig_data) + # logging[name][f"bias_grad"] = _collect_stats(module.bias.grad) + + if isinstance(grad_output, tuple): + for i, grad in enumerate(grad_output): + if grad is None: + continue + + logs[name][f"grad_output:{i}"] = compute_stas(grad) + else: + logs[name]["grad_output"] = compute_stas(grad_output) + + if isinstance(grad_input, tuple): + for i, grad in enumerate(grad_input): + if grad is not None: + logs[name][f"grad_input:{i}"] = compute_stas(grad) + else: + if grad_input is not None: + logs[name]["grad_input"] = compute_stas(grad_input) + + handles = [] + handles.append(module.register_forward_hook(_save_output_stats)) + # module.register_full_backward_pre_hook(_save_grad_stats) + handles.append(module.register_backward_hook(_save_grad_stats)) + return logs, handles + # module.register_module_full_backward_hook(_save_grad_stats) + + +def monitor_nanotron_model(model: NanotronModel, parallel_context: ParallelContext): + def get_leaf_modules(module: nn.Module) -> List[Tuple[str, nn.Module]]: + """ + Return all the leaf modules (modules without any child modules) in a PyTorch module. + """ + leaf_modules = [] + for n, m in module.named_modules(): + if not list(m.children()): + leaf_modules.append((n, m)) + return leaf_modules + + logs = {} + handles = [] + leaf_modules = get_leaf_modules(model) + + for name, module in leaf_modules: + module_logs, module_handles = track_weight_and_grad_stats(name, module, parallel_context) + logs.update(module_logs) + handles.extend(module_handles) + + return logs, handles + + +def convert_logs_to_flat_logs( + logs: Dict[str, Dict[str, Dict[str, Union[torch.Tensor, float]]]] +) -> Dict[str, Union[torch.Tensor, float]]: + flat_logs = {} + for module_name, components in logs.items(): + for component_name, stats in components.items(): + for metric_name, metric_value in stats.items(): + flat_logs[f"{module_name}:{component_name}:{metric_name}"] = metric_value + + return flat_logs diff --git a/src/nanotron/trainer.py b/src/nanotron/trainer.py index bc26b582..7f8a0c9e 100644 --- a/src/nanotron/trainer.py +++ b/src/nanotron/trainer.py @@ -36,6 +36,7 @@ ) from nanotron.constants import LR_SCHEDULER_CKP_PATH, METADATA_CKP_PATH, OPTIMIZER_CKP_PATH from nanotron.dataloader import sanity_check_dataloader +from nanotron.debug.monitor import monitor_nanotron_model from nanotron.helpers import ( _vocab_size_with_padding, get_profiler, @@ -189,13 +190,26 @@ def __init__( # we might not have the optimizer state optim_ckp_path = OPTIMIZER_CKP_PATH.format(self.init_checkpoint_path) if os.path.exists(optim_ckp_path): - load_optimizer( - optimizer=self.optimizer, - parallel_context=self.parallel_context, - root_folder=self.init_checkpoint_path, - param_shard_metadata=self.param_shard_metadata, - model=self.model, - ) + # checkpoint_metadata = load_meta( + # parallel_context=self.parallel_context, root_folder=self.init_checkpoint_path + # ) + + prev_config = get_config_from_file((self.init_checkpoint_path / "config.yaml").as_posix()) + if ( + prev_config.optimizer.accumulate_grad_in_fp32 is False + and self.config.optimizer.accumulate_grad_in_fp32 is True + ): + # NOTE: if in the previous config, we didn't use fp32 accumulation + # then we don't have the states for it, so we can't load it along with the optimizer + pass + else: + load_optimizer( + optimizer=self.optimizer, + parallel_context=self.parallel_context, + root_folder=self.init_checkpoint_path, + param_shard_metadata=self.param_shard_metadata, + model=self.model, + ) else: log_rank( f"Can't find the optimizer state's checkpoint in {optim_ckp_path}, so we skip loading its checkpoint!", @@ -258,6 +272,7 @@ def __init__( # Log where each module is instantiated self.unwrapped_model.log_modules(level=logging.DEBUG, group=self.parallel_context.world_pg, rank=0) + self.nn_logs, self.nn_handles = monitor_nanotron_model(self.unwrapped_model, self.parallel_context) self.micro_batch_size = self.config.tokens.micro_batch_size self.n_micro_batches_per_batch = self.config.tokens.batch_accumulation_per_replica @@ -295,6 +310,7 @@ def pre_training(self, *args, **kwargs): name=f"{current_time}_{self.config.general.run}", config={"nanotron_config": self.config.as_dict()}, ) + # wandb.watch(self.model, log="all") def post_train_step(self): pass @@ -411,6 +427,10 @@ def train( torch.cuda.empty_cache() with prof: for self.iteration_step in range(self.start_iteration_step + 1, self.config.tokens.train_steps + 1): + from nanotron import constants + + constants.GLOBAL_STEP = self.iteration_step + if isinstance(prof, torch.profiler.profile): prof.step() @@ -622,6 +642,11 @@ def train_step_logs( else: exit(0) + if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: + from nanotron.debug.monitor import convert_logs_to_flat_logs + + wandb.log({**convert_logs_to_flat_logs(self.nn_logs), "iteration_step": self.iteration_step}) + def init_model(self) -> Union[NanotronModel, DistributedDataParallel]: """Initialize the model and load weights from checkpoint if needed.""" # TODO: add max_position_embeddings From d1d54f155a203b5ae7d8d096315057dbf3ed0b4b Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Thu, 23 May 2024 12:15:39 +0000 Subject: [PATCH 19/43] add monitor --- src/nanotron/debug/monitor.py | 88 ++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/src/nanotron/debug/monitor.py b/src/nanotron/debug/monitor.py index b8e12bbb..21921713 100644 --- a/src/nanotron/debug/monitor.py +++ b/src/nanotron/debug/monitor.py @@ -9,14 +9,17 @@ def track_weight_and_grad_stats(name: str, module: nn.Module, parallel_context: ParallelContext): - def compute_stas(tensors): + def compute_stats(name, tensors): tensors = {"tensor": tensors} if not isinstance(tensors, dict) else tensors - - # if isinstance(tensor, dict): - # assert 1 == 1 - stats = {} + for key, tensor in tensors.items(): + if tensor.dtype == torch.long or tensor.dtype == torch.int or tensor.dtype == torch.bool: + continue + + if tensor is None: + assert 1 == 1 + stats[key] = {} stats[key] = { # "mean": tensor.mean().item(), @@ -33,28 +36,38 @@ def compute_stas(tensors): # NOTE: now all reduce mean this across tp ranks tp_group = parallel_context.tp_pg for metric_name, metric_value in stats[key].items(): - stats[key][metric_name] = torch.tensor(metric_value, device=tensor.device, dtype=tensor.dtype) - dist.all_reduce(stats[key][metric_name], op=ReduceOp.MAX, group=tp_group) - # if stats[key][metric_name].is_floating_point(): - # stats[key][metric_name] /= parallel_context.tensor_parallel_size + # tp_rank = dist.get_rank(group=tp_group) + # stats[key][f"data:tp_{tp_rank}"] = tensor.detach().cpu().tolist() - return stats + return stats[list(stats.keys())[0]] if len(stats) == 1 else stats logs: Dict[str, Dict[str, float]] = {} if name not in logs: logs[name] = {} - def _save_output_stats(module: nn.Linear, input: torch.Tensor, output: torch.Tensor): - if hasattr(module, "weight") and module.weight is not None: - logs[name]["weight"] = compute_stas(module.weight.data) - # logging[name]["weight"] = _collect_stats(module.weight) + def _save_output_stats(module: nn.Module, input: torch.Tensor, output: torch.Tensor): + param_names = [name for name, _ in module.named_parameters()] + for param_name in param_names: + if hasattr(module, param_name): + param = getattr(module, param_name) + stats = compute_stats(name, param.data) + if stats is not None: + logs[name][param_name] = stats + + # if hasattr(module, "weight") and module.weight is not None: + # stats = compute_stats(name, module.weight.data) + + # if stats is not None: + # logs[name]["weight"] = stats - if hasattr(module, "bias") and module.bias is not None: - logs[name]["bias"] = compute_stas(module.bias) + # if hasattr(module, "bias") and module.bias is not None: + # stats = compute_stats(name, module.bias) + # if stats is not None: + # logs[name]["bias"] = stats inputs = input if isinstance(input, tuple) else (input,) outputs = output if isinstance(output, tuple) else (output,) @@ -64,45 +77,53 @@ def _save_output_stats(module: nn.Linear, input: torch.Tensor, output: torch.Ten if inp.dtype == torch.long: # NOTE: this is input ids in transformers continue - logs[name][f"input:{i}"] = compute_stas(inp) + stats = compute_stats(name, inp) + if stats is not None: + logs[name][f"input:{i}"] = stats elif len(inputs) == 1: - logs[name]["input"] = compute_stas(inputs[0]) - + stats = compute_stats(name, inputs[0]) + if stats is not None: + logs[name]["input"] = stats if len(outputs) > 1: for i, out in enumerate(outputs): - logs[name][f"output:{i}"] = compute_stas(out) + stats = compute_stats(name, out) + if stats is not None: + logs[name][f"output:{i}"] = stats elif len(outputs) == 1: - logs[name]["output"] = compute_stas(outputs[0]) + stats = compute_stats(name, outputs[0]) + if stats is not None: + logs[name]["output"] = stats def _save_grad_stats(module: nn.Linear, grad_input, grad_output: torch.Tensor): - # import pydevd - # pydevd.settrace(suspend=False, trace_only_current_thread=True) - # logging[name][f"weight_grad"] = _collect_stats(module.weight.grad.orig_data) - # logging[name][f"bias_grad"] = _collect_stats(module.bias.grad) - if isinstance(grad_output, tuple): for i, grad in enumerate(grad_output): if grad is None: continue - logs[name][f"grad_output:{i}"] = compute_stas(grad) + stats = compute_stats(name, grad) + if stats is not None: + logs[name][f"grad_output:{i}"] = stats else: - logs[name]["grad_output"] = compute_stas(grad_output) + stats = compute_stats(name, grad_output) + if stats is not None: + logs[name]["grad_output"] = stats if isinstance(grad_input, tuple): for i, grad in enumerate(grad_input): if grad is not None: - logs[name][f"grad_input:{i}"] = compute_stas(grad) + stats = compute_stats(name, grad) + if stats is not None: + logs[name][f"grad_input:{i}"] = stats else: if grad_input is not None: - logs[name]["grad_input"] = compute_stas(grad_input) + stats = compute_stats(name, grad_input) + if stats is not None: + logs[name]["grad_input"] = stats handles = [] handles.append(module.register_forward_hook(_save_output_stats)) - # module.register_full_backward_pre_hook(_save_grad_stats) handles.append(module.register_backward_hook(_save_grad_stats)) return logs, handles - # module.register_module_full_backward_hook(_save_grad_stats) def monitor_nanotron_model(model: NanotronModel, parallel_context: ParallelContext): @@ -118,7 +139,8 @@ def get_leaf_modules(module: nn.Module) -> List[Tuple[str, nn.Module]]: logs = {} handles = [] - leaf_modules = get_leaf_modules(model) + # leaf_modules = get_leaf_modules(model) + leaf_modules = [(name, module) for name, module in model.named_modules()] for name, module in leaf_modules: module_logs, module_handles = track_weight_and_grad_stats(name, module, parallel_context) From c57a3e9d74a9ee79d78cc382c962d8b7c07cc006 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Sat, 25 May 2024 08:18:27 +0000 Subject: [PATCH 20/43] fix sequence splitting --- .gitignore | 2 + .../infinite-context-length/generate_data.py | 117 ++-- .../infinite-context-length/generate_evals.py | 593 ++++++++++++++++++ src/nanotron/generation/decode.py | 21 +- src/nanotron/models/llama.py | 111 ++-- src/nanotron/optim/gradient_accumulator.py | 3 + .../parallel/pipeline_parallel/engine.py | 28 +- src/nanotron/trainer.py | 17 +- 8 files changed, 794 insertions(+), 98 deletions(-) create mode 100644 examples/infinite-context-length/generate_evals.py diff --git a/.gitignore b/.gitignore index cbc04eaf..985a3136 100644 --- a/.gitignore +++ b/.gitignore @@ -163,3 +163,5 @@ cython_debug/ checkpoints/ wandb/ +*.pkl +examples/infinite-context-length/*.txt diff --git a/examples/infinite-context-length/generate_data.py b/examples/infinite-context-length/generate_data.py index ed7cf029..394f785d 100644 --- a/examples/infinite-context-length/generate_data.py +++ b/examples/infinite-context-length/generate_data.py @@ -1,9 +1,9 @@ +import argparse import glob import os import random import uuid -import numpy as np from datasets import Dataset from transformers import AutoTokenizer @@ -94,15 +94,11 @@ def generate_needle_in_haystack_test( ): # Load up the haystack context tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") - # target_cut_length = context_length - token_length(tokenizer, soft_prompt) - token_length(tokenizer, retrieval_question) - # target_cut_length = context_length - token_length(tokenizer, f"{soft_prompt} 1. \n\n{retrieval_question}") - 1 target_cut_length = context_length - token_length(tokenizer, PROMPT.format(soft_prompt, 1, retrieval_question)) - 1 context = read_context_files(tokenizer, soft_prompt, retrieval_question, target_cut_length) # Insert the needle into the context at the specified depth percent - # context_with_needle = insert_needle(context, needle) - context_with_needle = insert_needle_with_depth(needle_prompt, context, depth_percent, target_cut_length, tokenizer) # Generate the prompt using the context with the needle @@ -127,56 +123,81 @@ def generate_needle_in_haystack_test( return prompt +def get_args(): + parser = argparse.ArgumentParser() + parser.add_argument("--context_length", type=int, required=True) + parser.add_argument("--depth_percent", type=int, required=True) + parser.add_argument("--id", type=int, required=True) + return parser.parse_args() + + if __name__ == "__main__": + args = get_args() + + context_length = args.context_length + depth_percent = args.depth_percent + id = args.id + haystack_dir = "./" + # NOTE: depth_percent + 1 to avoid 0 + start_range = 1000 * (depth_percent + 1) * id + end_range = start_range + start_range + + print( + f"Generating prompts for context length: {context_length} and depth percent: {depth_percent} and id: {id} \n" + ) + print(f"start_range: {start_range}, end_range: {end_range} \n") def generate_dataset(): - num_prompts = 1 + # num_prompts = 1700 + num_prompts = 100 # soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." - soft_prompt = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key." - context_lengths = [ - 32768, - ] - depth_percents = np.linspace(0, 100, num=21) + soft_prompt = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on." + # context_lengths = [ + # 32768, + # ] + # depth_percents = np.linspace(0, 100, num=21) dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} generated_ids = set() generated_pass_keys = set() - for context_length in context_lengths: - print(f"Generating prompts for context length: {context_length} \n") - for depth_percent in depth_percents: - for _ in range(num_prompts): - while True: - pass_key = random.randint(10000, 50000) - if pass_key not in generated_pass_keys: - generated_pass_keys.add(pass_key) - break - - needle_prompt = f". The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " - retrieval_question = f"What is the pass key? The pass key is {pass_key}." - - prompt = generate_needle_in_haystack_test( - pass_key, - needle_prompt, - haystack_dir, - soft_prompt, - retrieval_question, - context_length, - depth_percent, - ) - - while True: - text_id = str(uuid.uuid4()) - if text_id not in generated_ids: - generated_ids.add(text_id) - break - - dataset_dict["id"].append(text_id) - dataset_dict["prompt"].append(prompt) - dataset_dict["answer"].append(pass_key) - dataset_dict["context_length"].append(context_length) - dataset_dict["depth_percent"].append(depth_percent) + # for context_length in context_lengths: + # print(f"Generating prompts for context length: {context_length} \n") + # for depth_percent in depth_percents: + for i in range(num_prompts): + print(f"generating prompt {i} \n") + + while True: + pass_key = random.randint(start_range, end_range) + if pass_key not in generated_pass_keys: + generated_pass_keys.add(pass_key) + break + + needle_prompt = f". The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " + retrieval_question = f"What is the pass key? The pass key is {pass_key}." + + prompt = generate_needle_in_haystack_test( + pass_key, + needle_prompt, + haystack_dir, + soft_prompt, + retrieval_question, + context_length, + depth_percent, + ) + + while True: + text_id = str(uuid.uuid4()) + if text_id not in generated_ids: + generated_ids.add(text_id) + break + + dataset_dict["id"].append(text_id) + dataset_dict["prompt"].append(prompt) + dataset_dict["answer"].append(pass_key) + dataset_dict["context_length"].append(context_length) + dataset_dict["depth_percent"].append(depth_percent) dataset = Dataset.from_dict(dataset_dict) return dataset @@ -185,5 +206,7 @@ def generate_dataset(): dataset = generate_dataset() # Save the dataset to disk - dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") - dataset.push_to_hub("nanotron/needle_in_a_hay_stack_finetuning_dataset") + dataset.save_to_disk( + f"/fsx/phuc/projects/nanotron/examples/infinite-context-length/needle_finetune_datasets/needle_finetuning_ctx_len_32768_and_depth_{depth_percent}_and_id_{id}" + ) + # dataset.push_to_hub("nanotron/needle_in_a_hay_stack_finetuning_dataset") diff --git a/examples/infinite-context-length/generate_evals.py b/examples/infinite-context-length/generate_evals.py new file mode 100644 index 00000000..4286624d --- /dev/null +++ b/examples/infinite-context-length/generate_evals.py @@ -0,0 +1,593 @@ +import glob +import os + + +def generate_needle_in_haystack_test( + needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent +): + def read_context_files(): + context = "" + base_dir = os.path.abspath(os.path.dirname(__file__)) # Package directory + + while len(context) < context_length: + for file in glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")): + with open(file, "r") as f: + context += f.read() + return context + + def insert_needle(context): + if depth_percent == 100: + # If depth percent is 100, place the needle at the end + new_context = context[: context_length - len(needle)] + needle + else: + # Get the position to insert the needle + insertion_point = int(context_length * (depth_percent / 100)) + + # Find the nearest period to the insertion point + while context[insertion_point] != "." and insertion_point > 0: + insertion_point -= 1 + + # Insert the needle at the appropriate position + new_context = context[:insertion_point] + needle + context[insertion_point:context_length] + + return new_context + + # Load up the haystack context + context = read_context_files() + + # Truncate the context to the desired context length + context = context[:context_length] + + # Insert the needle into the context at the specified depth percent + context_with_needle = insert_needle(context) + + # Generate the prompt using the context with the needle + prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" + + return prompt, needle + + +# # Working example +haystack_dir = "./" + +import random +import uuid + +import numpy as np +from datasets import Dataset + + +def generate_dataset(): + num_prompts = 100 + soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." + context_lengths = [ + 1024, + 2048, + 4096, + 8192, + 16384, + 32768, + # 65536, + # 131072, + # 262144, + # 524288, + # 1048576, + ] + depth_percents = np.linspace(0, 100, num=21) + + dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} + generated_ids = set() + + for context_length in context_lengths: + print(f"Generating prompts for context length: {context_length} \n") + for depth_percent in depth_percents: + for _ in range(num_prompts): + pass_key = random.randint(10000, 50000) + needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " + retrieval_question = "What is the pass key? The pass key is " + + prompt, _ = generate_needle_in_haystack_test( + needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent + ) + # answer = f"The pass key is {pass_key}" + + while True: + text_id = str(uuid.uuid4()) + if text_id not in generated_ids: + generated_ids.add(text_id) + break + + dataset_dict["id"].append(text_id) + dataset_dict["prompt"].append(prompt) + dataset_dict["answer"].append(pass_key) + dataset_dict["context_length"].append(context_length) + dataset_dict["depth_percent"].append(depth_percent) + + dataset = Dataset.from_dict(dataset_dict) + return dataset + + +# Generate the dataset +dataset = generate_dataset() + +# Save the dataset to disk +dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") +dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") + + +############################################################################################################ + + +# import glob +# import os +# import random +# import uuid + +# import numpy as np +# from datasets import Dataset +# from transformers import AutoTokenizer + + +# if __name__ == "__main__": +# def generate_needle_in_haystack_test( +# needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent +# ): +# def read_context_files(): +# context = "" +# base_dir = os.path.abspath(os.path.dirname(__file__)) # Package directory + +# while len(tokenizer.encode(context)) < context_length: +# for file in glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")): +# with open(file, "r") as f: +# context += f.read() +# return context + +# def insert_needle(context): +# if depth_percent == 100: +# # If depth percent is 100, place the needle at the end +# new_context = context[: context_length - len(tokenizer.encode(needle))] + needle +# else: +# # Get the position to insert the needle +# insertion_point = int(context_length * (depth_percent / 100)) + +# # Find the nearest period to the insertion point +# while context[insertion_point] != "." and insertion_point > 0: +# insertion_point -= 1 + +# # Insert the needle at the appropriate position +# new_context = context[:insertion_point] + needle + context[insertion_point:context_length] + +# return new_context + +# # Load up the haystack context +# context = read_context_files() + +# # Truncate the context to the desired context length +# context = tokenizer.decode(tokenizer.encode(context)[:context_length]) + +# # Insert the needle into the context at the specified depth percent +# context_with_needle = insert_needle(context) + +# # Generate the prompt using the context with the needle +# prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" + +# return prompt, needle + +# # Working example +# haystack_dir = "./" + +# # Load the tokenizer +# tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") + + +# def generate_dataset(): +# num_prompts = 1 +# soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." +# context_lengths = [ +# # 1024, +# # 2048, +# # 4096, +# # 8192, +# # 16384, +# 32768, +# # 65536, +# # 131072, +# # 262144, +# # 524288, +# # 1048576, +# ] +# depth_percents = np.linspace(0, 100, num=21) + +# dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} +# generated_ids = set() + +# for context_length in context_lengths: +# print(f"Generating prompts for context length: {context_length} \n") +# for depth_percent in depth_percents: +# for _ in range(num_prompts): +# pass_key = random.randint(10000, 50000) +# needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " +# retrieval_question = f"What is the pass key? The pass key is " + +# prompt, _ = generate_needle_in_haystack_test( +# needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent +# ) + +# while True: +# text_id = str(uuid.uuid4()) +# if text_id not in generated_ids: +# generated_ids.add(text_id) +# break + +# dataset_dict["id"].append(text_id) +# dataset_dict["prompt"].append(prompt) +# dataset_dict["answer"].append(pass_key) +# dataset_dict["context_length"].append(context_length) +# dataset_dict["depth_percent"].append(depth_percent) + +# dataset = Dataset.from_dict(dataset_dict) +# return dataset + + +# # Generate the dataset +# dataset = generate_dataset() + +# # Save the dataset to disk +# dataset.save_to_disk("needle_in_a_hay_stack_finetuning_dataset") +# dataset.push_to_hub("nanotron/needle_in_a_hay_stack_finetuning_dataset") + + +############################################################################################################ + +# import glob +# import os +# import random +# import uuid + +# import numpy as np +# from datasets import Dataset +# from transformers import AutoTokenizer + +# if __name__ == "__main__": +# def generate_needle_in_haystack_test( +# needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent +# ): +# def read_context_files(): +# context = "" +# base_dir = os.path.abspath(os.path.dirname(__file__)) # Package directory +# files = glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")) +# file_index = 0 + +# while len(tokenizer.encode(f"{soft_prompt} {context} {needle} \n\n{retrieval_question}")) < context_length: +# with open(files[file_index], "r") as f: +# context += f.read() +# file_index = (file_index + 1) % len(files) + +# return context + +# def insert_needle(context): +# if depth_percent == 100: +# # If depth percent is 100, place the needle at the end +# new_context = context[: -len(needle)] + needle +# else: +# # Get the position to insert the needle +# insertion_point = int(len(context) * (depth_percent / 100)) + +# # Find the nearest period to the insertion point +# while context[insertion_point] != "." and insertion_point > 0: +# insertion_point -= 1 + +# # Insert the needle at the appropriate position +# new_context = context[:insertion_point] + needle + context[insertion_point:] + +# return new_context + +# # Load up the haystack context +# context = read_context_files() + +# # Insert the needle into the context at the specified depth percent +# context_with_needle = insert_needle(context) + +# # Generate the prompt using the context with the needle +# prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" + +# # Truncate the prompt to the desired context length +# prompt = tokenizer.decode(tokenizer.encode(prompt)[:context_length]) + +# return prompt, needle + + +# # Working example +# haystack_dir = "./" + +# # Load the tokenizer +# tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") + + +# def generate_dataset(): +# num_prompts = 1 +# soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." +# context_lengths = [ +# # 1024, +# # 2048, +# # 4096, +# # 8192, +# # 16384, +# 32768, +# # 65536, +# # 131072, +# # 262144, +# # 524288, +# # 1048576, +# ] +# depth_percents = np.linspace(0, 100, num=21) + +# dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} +# generated_ids = set() + +# for context_length in context_lengths: +# print(f"Generating prompts for context length: {context_length} \n") +# for depth_percent in depth_percents: +# for _ in range(num_prompts): +# pass_key = random.randint(10000, 50000) +# needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " +# retrieval_question = f"What is the pass key? The pass key is " + +# prompt, _ = generate_needle_in_haystack_test( +# needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent +# ) + +# while True: +# text_id = str(uuid.uuid4()) +# if text_id not in generated_ids: +# generated_ids.add(text_id) +# break + +# dataset_dict["id"].append(text_id) +# dataset_dict["prompt"].append(prompt) +# dataset_dict["answer"].append(pass_key) +# dataset_dict["context_length"].append(context_length) +# dataset_dict["depth_percent"].append(depth_percent) + +# dataset = Dataset.from_dict(dataset_dict) +# return dataset + + +# # Generate the dataset +# dataset = generate_dataset() + +# # Save the dataset to disk +# dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") +# dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") + + +# import glob +# import os +# import random +# import uuid + +# import numpy as np +# from datasets import Dataset +# from transformers import AutoTokenizer + +# if __name__ == "__main__": +# def generate_needle_in_haystack_test( +# needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent +# ): +# def read_context_files(): +# base_dir = os.path.abspath(os.path.dirname(__file__)) # Package directory +# files = glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")) +# file_contents = [] +# for file in files: +# with open(file, "r") as f: +# file_contents.append(f.read()) +# return file_contents + +# def insert_needle(context): +# if depth_percent == 100: +# # If depth percent is 100, place the needle at the end +# new_context = context[: -len(needle)] + needle +# else: +# # Get the position to insert the needle +# insertion_point = int(len(context) * (depth_percent / 100)) + +# # Find the nearest period to the insertion point +# while context[insertion_point] != "." and insertion_point > 0: +# insertion_point -= 1 + +# # Insert the needle at the appropriate position +# new_context = context[:insertion_point] + needle + context[insertion_point:] + +# return new_context + +# # Load up the haystack context +# file_contents = read_context_files() +# context = "".join(file_contents) + +# # Calculate the number of tokens for soft_prompt and retrieval_question +# soft_prompt_tokens = len(tokenizer.encode(soft_prompt)) +# retrieval_question_tokens = len(tokenizer.encode(retrieval_question)) + +# # Calculate the remaining tokens for the context +# remaining_tokens = context_length - soft_prompt_tokens - retrieval_question_tokens + +# # Repeat the context to make it long enough +# repeated_context = (context * ((remaining_tokens // len(tokenizer.encode(context))) + 1))[:remaining_tokens] + +# # Insert the needle into the repeated context at the specified depth percent +# context_with_needle = insert_needle(repeated_context) + +# # Generate the prompt using the context with the needle +# prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" + +# return prompt, needle + + +# # Working example +# haystack_dir = "./" + +# # Load the tokenizer +# tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") + + +# def generate_dataset(): +# num_prompts = 1 +# soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." +# context_lengths = [ +# # 1024, +# # 2048, +# # 4096, +# # 8192, +# # 16384, +# 32768, +# # 65536, +# # 131072, +# # 262144, +# # 524288, +# # 1048576, +# ] +# depth_percents = np.linspace(0, 100, num=21) + +# dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} +# generated_ids = set() + +# for context_length in context_lengths: +# print(f"Generating prompts for context length: {context_length} \n") +# for depth_percent in depth_percents: +# for _ in range(num_prompts): +# pass_key = random.randint(10000, 50000) +# needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " +# retrieval_question = f"What is the pass key? The pass key is " + +# prompt, _ = generate_needle_in_haystack_test( +# needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent +# ) + +# while True: +# text_id = str(uuid.uuid4()) +# if text_id not in generated_ids: +# generated_ids.add(text_id) +# break + +# dataset_dict["id"].append(text_id) +# dataset_dict["prompt"].append(prompt) +# dataset_dict["answer"].append(pass_key) +# dataset_dict["context_length"].append(context_length) +# dataset_dict["depth_percent"].append(depth_percent) + +# dataset = Dataset.from_dict(dataset_dict) +# return dataset + + +# # Generate the dataset +# dataset = generate_dataset() + +# # Save the dataset to disk +# dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") +# dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") + +import glob +import os +import random +import uuid + +import numpy as np +from datasets import Dataset +from transformers import AutoTokenizer + + +def token_length(tokenizer, text): + return len(tokenizer.encode(text)[:-1]) # -1 to exclude the EOS token + + +def read_context_files(tokenizer, soft_prompt, retrieval_question, context_length): + context = "" + base_dir = os.path.abspath(os.path.dirname(__file__)) + files = glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")) + file_index = 0 + + target_context_length = ( + context_length - token_length(tokenizer, soft_prompt) - token_length(tokenizer, retrieval_question) + ) + + while token_length(tokenizer, context) < target_context_length: + with open(files[file_index], "r") as f: + context += f.read() + file_index = (file_index + 1) % len(files) + + return context + + +def insert_needle(context, needle): + # Get the position to insert the needle + insertion_point = random.randint(0, len(context)) - len(needle) + + # Insert the needle at the appropriate position + new_context = context[:insertion_point] + needle + context[insertion_point:] + + return new_context + + +def generate_needle_in_haystack_test( + needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent +): + # Load up the haystack context + tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") + context = read_context_files(tokenizer, soft_prompt, retrieval_question, context_length) + + # Insert the needle into the context at the specified depth percent + context_with_needle = insert_needle(context, needle) + + # Generate the prompt using the context with the needle + prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" + + return prompt, needle + + +if __name__ == "__main__": + haystack_dir = "./" + + def generate_dataset(): + num_prompts = 1 + soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." + context_lengths = [ + 32768, + ] + depth_percents = np.linspace(0, 100, num=21) + + dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} + generated_ids = set() + + for context_length in context_lengths: + print(f"Generating prompts for context length: {context_length} \n") + for depth_percent in depth_percents: + for _ in range(num_prompts): + pass_key = random.randint(10000, 50000) + needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " + retrieval_question = "What is the pass key? The pass key is " + + prompt, _ = generate_needle_in_haystack_test( + needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent + ) + + while True: + text_id = str(uuid.uuid4()) + if text_id not in generated_ids: + generated_ids.add(text_id) + break + + dataset_dict["id"].append(text_id) + dataset_dict["prompt"].append(prompt) + dataset_dict["answer"].append(pass_key) + dataset_dict["context_length"].append(context_length) + dataset_dict["depth_percent"].append(depth_percent) + + dataset = Dataset.from_dict(dataset_dict) + return dataset + + # Generate the dataset + dataset = generate_dataset() + + # Save the dataset to disk + dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") + dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") diff --git a/src/nanotron/generation/decode.py b/src/nanotron/generation/decode.py index 4b177805..4dfa3e18 100644 --- a/src/nanotron/generation/decode.py +++ b/src/nanotron/generation/decode.py @@ -134,7 +134,6 @@ def find_sequence_positions(tensor, sequence): # tokenizer.eos_token_id = 2 # tokenizer.bos_token_id = 1 # tokenizer.pad_token_id = tokenizer.eos_token_id - encodings = tokenizer( [elt.text for elt in micro_batch], return_tensors="pt", @@ -155,7 +154,27 @@ def find_sequence_positions(tensor, sequence): # # pad_to_multiple_of=8 # ) + # TARGET_INPUT_IDS = tokenizer(["Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?"], return_tensors="pt")["input_ids"][0] + # LENGTH = TARGET_INPUT_IDS.shape[0] # assert encodings["input_ids"][0].shape[0] == 32768 + encodings["input_ids"] = encodings["input_ids"][:, :2049] + encodings["attention_mask"] = encodings["attention_mask"][:, :2049] + # encodings["input_ids"][:, 2048-LENGTH:2048] = TARGET_INPUT_IDS + + # import math + # seq_len = encodings["input_ids"].shape[1] + # segment_length = 2048 + + # n_segments = math.ceil(seq_len / segment_length) + # segment_lengths = [segment_length] * (n_segments - 1) + [seq_len - (n_segments - 1) * segment_length] + # xs_input_ids = torch.split(encodings["input_ids"][0], segment_lengths, dim=0) + + # from nanotron.constants import NEEDLE + # last_segment_text = tokenizer.decode(xs_input_ids[-1]) + # if str(NEEDLE) in last_segment_text: + # print(f"{NEEDLE} is in the last segment") + # else: + # print(f"can't find the needle {NEEDLE} in the last segment") encodings["attention_mask"] = encodings.attention_mask.to(dtype=torch.bool, device="cuda") encodings.to("cuda") diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index dbda2d41..5b559613 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -53,13 +53,15 @@ def compute_stas(tensor): ) return { - "mean": tensor.mean().item(), - "std": tensor.std().item(), - "var": tensor.var().item(), - "norm": tensor.norm().item(), - "min": tensor.min().item(), - "max": tensor.max().item(), - "amax": tensor.abs().max().item(), + # "mean": tensor.mean().item(), + # "std": tensor.std().item(), + # "var": tensor.var().item(), + # "norm": tensor.norm().item(), + # "min": tensor.min().item(), + # "max": tensor.max().item(), + "amax": tensor.abs() + .max() + .item(), } @@ -381,11 +383,12 @@ def __init__( # assert config.max_position_embeddings == 32768 # NOTE: for 1b training - self.segment_lengths = 2048 + # self.segment_lengths = 2048 + # self.segment_lengths = 4096 # NOTE: for sanity 200m training # prev 16 - # self.segment_lengths = 256 + self.segment_lengths = 256 # self.segment_lengths = 16 device = self.o_proj.weight.device @@ -407,20 +410,24 @@ def forward( self, hidden_states: TensorType["sharded_seq_length", "batch_size", "hidden_size"], sequence_mask: TensorType["batch_size", "seq_length"], - prev_memory, - prev_normalization, ): # if self.layer_idx == 4: # assert 1 == 1 - batch_size = hidden_states.shape[1] - seq_len = hidden_states.shape[0] + # batch_size = hidden_states.shape[1] + # seq_len = hidden_states.shape[0] + + batch_size = hidden_states.shape[0] + seq_len = hidden_states.shape[1] + + assert seq_len == 1024 + # assert seq_len % self.n_segments == 0 # segment_length = seq_len // self.n_segments # hidden_size = hidden_states.shape[2] - if seq_len >= self.segment_lengths: + if seq_len > self.segment_lengths: # n_segments = seq_len // self.segment_lengths # segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) # segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) @@ -431,9 +438,15 @@ def forward( segment_lengths = [self.segment_lengths] * (n_segments - 1) + [ seq_len - (n_segments - 1) * self.segment_lengths ] - segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=0) + assert sum(segment_lengths) == seq_len + # assert hidden_states.shape[0] == seq_len + assert hidden_states.shape[1] == seq_len + # segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=0) + segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=1) # NOTE: assume that mask are all the same # because we split across sequence length + # NOTE: take the assumption that all the masks are the same + assert torch.all(sequence_mask) segment_sequence_masks = torch.split(sequence_mask[:, :seq_len], segment_lengths, dim=1) else: segment_hidden_states = [hidden_states] @@ -449,7 +462,7 @@ def forward( # sequence_masks = [] idx = 0 - # logs = {} + logs = {} for segment_hidden_state, segment_sequence_mask in zip(segment_hidden_states, segment_sequence_masks): # if idx == 1: @@ -464,9 +477,9 @@ def forward( # query_states, key_states, value_states = attn_outputs["qkv_states"] query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] - # logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) - # logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) - # logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) + logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) + logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) + logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) if query_states.ndim == 3: query_states = rearrange( @@ -563,14 +576,14 @@ def forward( output = self.o_proj(attention_output) - # if dist.get_rank() == 0: - # logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) - # logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) - # logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) - # logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) - # logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) - # logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) - # logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) + if dist.get_rank() == 0: + logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) + logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) + logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) + logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) + logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) + logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) + logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) # assert output.shape == (segment_length, batch_size, hidden_size) @@ -578,24 +591,29 @@ def forward( # memory = prev_memory if prev_memory is not None else 0.detach() outputs.append(output) + # memory, normalization = memory.detach(), normalization.detach() idx += 1 # NOTE: update memory - outputs = torch.cat(outputs, dim=0) # concat along sequence dimension + # outputs = torch.cat(outputs, dim=0) # concat along sequence dimension + outputs = torch.cat(outputs, dim=1) # concat along sequence dimension assert outputs.shape == hidden_states.shape - # if dist.get_rank() == 0: - # logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) - # wandb.log(logs) + if dist.get_rank() == 0: + import wandb + from nanotron import constants + + logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) + wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) # sequence_masks = torch.cat(sequence_masks, dim=1) # assert sequence_masks.shape == sequence_mask.shape return_outputs = { "hidden_states": outputs, "sequence_mask": sequence_mask, - "memory": memory, - "normalization": normalization, + # "memory": memory, + # "normalization": normalization, } return return_outputs @@ -994,8 +1012,8 @@ def forward( self, hidden_states: Union[torch.Tensor, TensorPointer], sequence_mask: Union[torch.Tensor, TensorPointer], - memory: Optional[torch.Tensor] = None, - normalization: Optional[torch.Tensor] = None, + # memory: Optional[torch.Tensor] = None, + # normalization: Optional[torch.Tensor] = None, ) -> Dict[str, Union[torch.Tensor, TensorPointer]]: residual = hidden_states hidden_states = self.input_layernorm(hidden_states) @@ -1003,8 +1021,8 @@ def forward( output = self.attn( hidden_states=hidden_states, sequence_mask=sequence_mask, - prev_memory=memory, - prev_normalization=normalization, + # prev_memory=memory, + # prev_normalization=normalization, ) hidden_states = output["hidden_states"] hidden_states = hidden_states + residual @@ -1017,8 +1035,8 @@ def forward( return { "hidden_states": hidden_states, "sequence_mask": output["sequence_mask"], - "memory": output["memory"], - "normalization": output["normalization"], + # "memory": output["memory"], + # "normalization": output["normalization"], } @@ -1047,7 +1065,7 @@ def forward(self, input_ids: torch.Tensor, input_mask: torch.Tensor): # [batch_ store["past_length"] = past_length + cumsum_mask[:, -1] # Format input in `[seq_length, batch_size]` to support high TP with low batch_size - input_ids = input_ids.transpose(0, 1) + # input_ids = input_ids.transpose(0, 1) input_embeds = self.token_embedding(input_ids) return {"input_embeds": input_embeds} @@ -1096,8 +1114,10 @@ def __init__( "tp_pg": parallel_context.tp_pg, "layer_idx": layer_idx, }, - module_input_keys={"hidden_states", "sequence_mask", "memory", "normalization"}, - module_output_keys={"hidden_states", "sequence_mask", "memory", "normalization"}, + # module_input_keys={"hidden_states", "sequence_mask", "memory", "normalization"}, + # module_output_keys={"hidden_states", "sequence_mask", "memory", "normalization"}, + module_input_keys={"hidden_states", "sequence_mask"}, + module_output_keys={"hidden_states", "sequence_mask"}, ) for layer_idx in range(config.num_hidden_layers) ] @@ -1155,8 +1175,8 @@ def forward_with_hidden_states( hidden_encoder_states = { "hidden_states": output["input_embeds"], "sequence_mask": input_mask, - "memory": None, - "normalization": None, + # "memory": None, + # "normalization": None, } for encoder_block in self.decoder: hidden_encoder_states = encoder_block(**hidden_encoder_states) @@ -1227,6 +1247,9 @@ def forward( # Megatron by defaults cast everything in fp32. `--f16-lm-cross-entropy` is an option you can use to keep current precision. # https://github.com/NVIDIA/Megatron-LM/blob/f267e6186eae1d6e2055b412b00e2e545a8e896a/megatron/model/gpt_model.py#L38 + # NOTE: because sharded_cross_entropy takes [seq_len, batch_size,...] + # so we have to transpose this + sharded_logits = sharded_logits.transpose(0, 1).contiguous() loss = sharded_cross_entropy( sharded_logits, label_ids.transpose(0, 1).contiguous(), group=self.tp_pg, dtype=torch.float ).transpose(0, 1) diff --git a/src/nanotron/optim/gradient_accumulator.py b/src/nanotron/optim/gradient_accumulator.py index 2e940744..38e3f6fc 100644 --- a/src/nanotron/optim/gradient_accumulator.py +++ b/src/nanotron/optim/gradient_accumulator.py @@ -211,6 +211,9 @@ def backward(self, loss: torch.Tensor): def _accumulate_grad(self, name: str, half_param: NanotronParameter) -> None: """Accumulate grad in fp32 and set the fp32 grad to the fp32 grad buffer, so that optimizer can update fp32 weights afterwards""" + # TODO(xrsrke): if we set accumulate_grad_in_fp32 to False, + # then if a parameter don't have grad, it doesn't raise what is the parameter name + # like here => add raise parameter name in accumulate_grad_in_fp32=False assert half_param.grad is not None, f"Expected param {name} to have gradient." fp32_grad = self.get_grad_buffer(name=name) diff --git a/src/nanotron/parallel/pipeline_parallel/engine.py b/src/nanotron/parallel/pipeline_parallel/engine.py index ca9df312..7ddabe25 100644 --- a/src/nanotron/parallel/pipeline_parallel/engine.py +++ b/src/nanotron/parallel/pipeline_parallel/engine.py @@ -2,6 +2,9 @@ from typing import Dict, Iterable, Optional, Union import torch +from torch import nn as torch_nn +from torch.nn.parallel import DistributedDataParallel + from nanotron import distributed as dist from nanotron import logging from nanotron.distributed import ProcessGroup @@ -12,8 +15,6 @@ from nanotron.parallel.pipeline_parallel.state import PipelineTrainBatchState from nanotron.parallel.pipeline_parallel.tensor_pointer import TensorPointer from nanotron.utils import ContextManagers -from torch import nn as torch_nn -from torch.nn.parallel import DistributedDataParallel logger = logging.get_logger(__name__) @@ -222,6 +223,11 @@ def train_batch_iter( class OneForwardOneBackwardPipelineEngine(PipelineEngine): def __init__(self): super().__init__() + self.idx = 0 + + from transformers import AutoTokenizer + + self.tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") def train_batch_iter( self, @@ -232,6 +238,9 @@ def train_batch_iter( grad_accumulator: Optional[GradientAccumulator], ) -> Iterable[Dict[str, Union[torch.Tensor, TensorPointer]]]: """Check https://arxiv.org/abs/2104.04473 for diagrams for the pipeline engine""" + + self.idx += 1 + self.nb_microbatches = nb_microbatches assert ( self.nb_microbatches >= pg.size() - 1 @@ -274,6 +283,21 @@ def train_batch_iter( outputs.append(output) for micro_batch in batch: + if dist.get_rank() == 0: + if self.idx == 1 or self.idx % 50 == 0: + decoded_texts = self.tokenizer.batch_decode(micro_batch["input_ids"]) + + with open( + "/fsx/phuc/projects/nanotron/examples/infinite-context-length/configs/exp19/training_inputs.txt", + "a", + ) as file: + # Write the self.idx number and the decoded text to the file + file.write(f"idx: {self.idx}\n") + + for i, text in enumerate(decoded_texts): + file.write(f"####### text_i = {i}\n") + file.write(text + "\n\n\n") + context = self._get_fwd_context(model=model) output = self.forward(context=context, state=state, micro_batch=micro_batch, model=model) diff --git a/src/nanotron/trainer.py b/src/nanotron/trainer.py index 7f8a0c9e..5fa872f3 100644 --- a/src/nanotron/trainer.py +++ b/src/nanotron/trainer.py @@ -272,7 +272,6 @@ def __init__( # Log where each module is instantiated self.unwrapped_model.log_modules(level=logging.DEBUG, group=self.parallel_context.world_pg, rank=0) - self.nn_logs, self.nn_handles = monitor_nanotron_model(self.unwrapped_model, self.parallel_context) self.micro_batch_size = self.config.tokens.micro_batch_size self.n_micro_batches_per_batch = self.config.tokens.batch_accumulation_per_replica @@ -434,6 +433,8 @@ def train( if isinstance(prof, torch.profiler.profile): prof.step() + nn_logs, nn_handles = monitor_nanotron_model(self.model, self.parallel_context) + self.iteration_start_time = time.time() self._update_dataloader_based_on_training_stages(dataloader_or_dls) @@ -446,6 +447,14 @@ def train( if (self.iteration_step - 1) % self.config.logging.iteration_step_info_interval == 0: self.train_step_logs(outputs=outputs, loss_avg=loss_avg) + if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: + from nanotron.debug.monitor import convert_logs_to_flat_logs + + wandb.log({**convert_logs_to_flat_logs(nn_logs), "iteration_step": self.iteration_step}) + + for handle in nn_handles: + handle.remove() + # Checkpoint if self.iteration_step % self.config.checkpoints.checkpoint_interval == 0: self.save_checkpoint() @@ -642,10 +651,10 @@ def train_step_logs( else: exit(0) - if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: - from nanotron.debug.monitor import convert_logs_to_flat_logs + # if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: + # from nanotron.debug.monitor import convert_logs_to_flat_logs - wandb.log({**convert_logs_to_flat_logs(self.nn_logs), "iteration_step": self.iteration_step}) + # wandb.log({**convert_logs_to_flat_logs(self.nn_logs), "iteration_step": self.iteration_step}) def init_model(self) -> Union[NanotronModel, DistributedDataParallel]: """Initialize the model and load weights from checkpoint if needed.""" From 05c48b35950679c7e07b4d4adbfe0969641afad0 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Mon, 27 May 2024 08:30:51 +0000 Subject: [PATCH 21/43] fix decode for non-megatron-sp --- run_generate.py | 4 +++- src/nanotron/generation/decode.py | 37 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/run_generate.py b/run_generate.py index 0fcedaeb..c50dde94 100644 --- a/run_generate.py +++ b/run_generate.py @@ -176,8 +176,10 @@ def main(): # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", # "def fib(n)", # "This film was probably inspired by Godzilla", + # "Paris is the capital of", # END_PASSKEY, - PASSKEY_NINETY_PERCENT, + # PASSKEY_NINETY_PERCENT, + "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The pass key is 2. Remember it. 2 is the pass key. What is the pass key? The pass key is ", # FINETUNE ] diff --git a/src/nanotron/generation/decode.py b/src/nanotron/generation/decode.py index 4dfa3e18..8e4bae94 100644 --- a/src/nanotron/generation/decode.py +++ b/src/nanotron/generation/decode.py @@ -315,6 +315,16 @@ def decode_text( ) else: if isinstance(state.new_input_ids, torch.Tensor): + # if len(state.generation_ids) > 1: + # batch_generated_ids = torch.cat((state.generation_ids[0], state.generation_ids[1].squeeze().unsqueeze(dim=0)), dim=-1) + # else: + # batch_generated_ids = torch.cat(state.generation_ids, dim=-1) + + # if len(state.generation_mask) > 1: + # batch_generated_mask = torch.cat((state.generation_mask[0], state.generation_mask[1].squeeze().unsqueeze(dim=0)), dim=-1) + # else: + # batch_generated_mask = torch.cat(state.generation_mask, dim=-1) + batch_generated_ids = torch.cat(state.generation_ids, dim=-1) batch_generated_mask = torch.cat(state.generation_mask, dim=-1) else: @@ -324,8 +334,13 @@ def decode_text( input_ids=batch_generated_ids, input_mask=batch_generated_mask, ) + # sharded_logits = sharded_logits.transpose(0, 1) + + assert 1 == 1 if isinstance(sharded_logits, torch.Tensor) and logits_are_batch_first: + # NOTE: consistent with megatron tp + sharded_logits = sharded_logits.transpose(0, 1) sharded_logits = sharded_logits.transpose(0, 1) # Communicate # TODO @thomasw21: Make a diagram to show how this works @@ -500,6 +515,16 @@ def generator(): assert all(isinstance(elt, torch.Tensor) for elt in state.generation_ids) batch_generated_ids = torch.cat(state.generation_ids, dim=-1) batch_generated_mask = torch.cat(state.generation_mask, dim=-1) + + # if len(state.generation_ids) > 1: + # batch_generated_ids = torch.cat((state.generation_ids[0], state.generation_ids[1].squeeze().unsqueeze(dim=0)), dim=-1) + # else: + # batch_generated_ids = torch.cat(state.generation_ids, dim=-1) + + # if len(state.generation_mask) > 1: + # batch_generated_mask = torch.cat((state.generation_mask[0], state.generation_mask[1].squeeze().unsqueeze(dim=0)), dim=-1) + # else: + # batch_generated_mask = torch.cat(state.generation_mask, dim=-1) else: assert all(isinstance(elt, TensorPointer) for elt in state.generation_ids) batch_generated_ids = TensorPointer(group_rank=decoder_input_rank) @@ -634,6 +659,8 @@ def decode_tokenized( input_mask=state.new_input_mask, ) if isinstance(sharded_logits, torch.Tensor): + # NOTE: consistent with megatron tp + sharded_logits = sharded_logits.transpose(0, 1) sharded_logits = sharded_logits.transpose(0, 1) # Communicate @@ -781,6 +808,16 @@ def generator(): assert all(isinstance(elt, torch.Tensor) for elt in state.generation_ids) batch_generated_ids = torch.cat(state.generation_ids, dim=-1) batch_generated_mask = torch.cat(state.generation_mask, dim=-1) + + # if len(state.generation_ids) > 1: + # batch_generated_ids = torch.cat((state.generation_ids[0], state.generation_ids[1].squeeze().unsqueeze(dim=0)), dim=-1) + # else: + # batch_generated_ids = torch.cat(state.generation_ids, dim=-1) + + # if len(state.generation_mask) > 1: + # batch_generated_mask = torch.cat((state.generation_mask[0], state.generation_mask[1].squeeze().unsqueeze(dim=0)), dim=-1) + # else: + # batch_generated_mask = torch.cat(state.generation_mask, dim=-1) else: assert all(isinstance(elt, TensorPointer) for elt in state.generation_ids) batch_generated_ids = TensorPointer(group_rank=decoder_input_rank) From f3a39b14fbe67009f8f5225e3ef6e6b1d5014be5 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Mon, 27 May 2024 08:46:19 +0000 Subject: [PATCH 22/43] backup with new sp splitting, but wrong reduction dimension in infini attention --- src/nanotron/models/llama.py | 65 ++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 5b559613..561c2903 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -19,8 +19,8 @@ import torch from torch import nn +from nanotron import constants, logging from nanotron import distributed as dist -from nanotron import logging from nanotron.config import Config, LlamaConfig, ParallelismArgs from nanotron.config.models_config import RandomInit, SpectralMupInit from nanotron.generation.generate_store import AttachableStore @@ -59,7 +59,9 @@ def compute_stas(tensor): # "norm": tensor.norm().item(), # "min": tensor.min().item(), # "max": tensor.max().item(), - "amax": tensor.abs() + "amax": tensor.detach() + .cpu() + .abs() .max() .item(), } @@ -352,6 +354,12 @@ def __init__( ) # TODO(kunhao): We want to have only one version per device and not one version per layer. self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings) + log_rank( + f"self.rotary_embedding.end is {self.rotary_embedding.end}", + logger=logger, + level=logging.INFO, + rank=0, + ) # self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=2048) # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) @@ -383,12 +391,12 @@ def __init__( # assert config.max_position_embeddings == 32768 # NOTE: for 1b training - # self.segment_lengths = 2048 + self.segment_lengths = 2048 # self.segment_lengths = 4096 # NOTE: for sanity 200m training # prev 16 - self.segment_lengths = 256 + # self.segment_lengths = 256 # self.segment_lengths = 16 device = self.o_proj.weight.device @@ -420,7 +428,8 @@ def forward( batch_size = hidden_states.shape[0] seq_len = hidden_states.shape[1] - assert seq_len == 1024 + # assert seq_len == 1024 + # assert seq_len == 32768 # assert seq_len % self.n_segments == 0 @@ -477,10 +486,6 @@ def forward( # query_states, key_states, value_states = attn_outputs["qkv_states"] query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] - logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) - logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) - logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) - if query_states.ndim == 3: query_states = rearrange( query_states, @@ -576,14 +581,20 @@ def forward( output = self.o_proj(attention_output) - if dist.get_rank() == 0: - logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) - logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) - logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) - logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) - logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) - logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) - logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) + if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % 50 == 0: + if dist.get_rank() == 0: + logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) + logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) + logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) + + logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) + logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) + logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) + logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) + logs[f"layer_{self.layer_idx}:seg_{idx}:attention_output"] = compute_stas(attention_output) + logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) + logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) + logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) # assert output.shape == (segment_length, batch_size, hidden_size) @@ -600,12 +611,12 @@ def forward( outputs = torch.cat(outputs, dim=1) # concat along sequence dimension assert outputs.shape == hidden_states.shape - if dist.get_rank() == 0: - import wandb - from nanotron import constants + if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % 50 == 0: + if dist.get_rank() == 0: + import wandb - logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) - wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) + logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) + wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) # sequence_masks = torch.cat(sequence_masks, dim=1) # assert sequence_masks.shape == sequence_mask.shape @@ -666,10 +677,6 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat sigma_key_states = F.elu(key_states) + 1 - # if TYPE == "linear": - # # memory = torch.matmul(key_states.transpose(-2, -1), value_states) - # new_value_states = value_states - # else: if prev_memory is None or prev_normalization is None: new_value_states = value_states else: @@ -678,11 +685,6 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat prev_memory, "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", ) - - # denominator = einsum( - # key_states, prev_normalization, - # "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size seq_len" - # ) denominator = einsum( sigma_key_states, prev_normalization, @@ -695,7 +697,6 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat memory = torch.matmul(sigma_key_states.transpose(-2, -1), new_value_states) - # memory = einsum(key_states, value_states, 'batch_size n_heads k_length d_head, batch_size n_heads v_length d_head -> batch_size n_heads k_length v_length') normalization = reduce( sigma_key_states, "batch_size n_heads seq_length d_head -> batch_size n_heads d_head", reduction="sum" ) From b1deec54a4773461feb3f5100f6844ad77571d0f Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Wed, 29 May 2024 03:55:29 +0000 Subject: [PATCH 23/43] backup --- src/nanotron/constants.py | 2 + src/nanotron/debug/monitor.py | 6 +- src/nanotron/models/llama.py | 958 ++++++++++++++++-- .../parallel/pipeline_parallel/engine.py | 33 +- src/nanotron/trainer.py | 34 +- 5 files changed, 919 insertions(+), 114 deletions(-) diff --git a/src/nanotron/constants.py b/src/nanotron/constants.py index f06e3a4d..7ba33101 100644 --- a/src/nanotron/constants.py +++ b/src/nanotron/constants.py @@ -16,3 +16,5 @@ NEEDLE = None GLOBAL_STEP: Optional[int] = None +LOG_STATE_INTERVAL = 500 +CONFIG = None diff --git a/src/nanotron/debug/monitor.py b/src/nanotron/debug/monitor.py index 21921713..184fe9fe 100644 --- a/src/nanotron/debug/monitor.py +++ b/src/nanotron/debug/monitor.py @@ -22,15 +22,13 @@ def compute_stats(name, tensors): stats[key] = {} stats[key] = { - # "mean": tensor.mean().item(), + "mean": tensor.mean().item(), # "std": tensor.std().item(), # "var": tensor.var().item(), # "norm": tensor.norm().item(), # "min": tensor.min().item(), # "max": tensor.max().item(), - "amax": tensor.abs() - .max() - .item(), + "amax": tensor.abs().max().item(), } # NOTE: now all reduce mean this across tp ranks diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 561c2903..4063627a 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -53,17 +53,13 @@ def compute_stas(tensor): ) return { - # "mean": tensor.mean().item(), + "mean": tensor.mean().item(), # "std": tensor.std().item(), # "var": tensor.var().item(), # "norm": tensor.norm().item(), # "min": tensor.min().item(), # "max": tensor.max().item(), - "amax": tensor.detach() - .cpu() - .abs() - .max() - .item(), + "amax": tensor.detach().cpu().abs().max().item(), } @@ -116,13 +112,13 @@ def init_rotary_embeddings(self): def forward( self, - x: torch.Tensor, # [batch_size, seq_length, num_heads, d_qk] - position_ids: Optional[torch.LongTensor], # [batch_size, seq_length] + x: torch.Tensor, # [batch_size, seq_len, num_heads, d_qk] + position_ids: Optional[torch.LongTensor], # [batch_size, seq_len] ): - batch_size, seq_length, num_heads, inner_dim = x.shape + batch_size, seq_len, num_heads, inner_dim = x.shape while ( position_ids is not None and position_ids[-1, -1] >= self.end - ) or seq_length >= self.end: # TODO @nouamane: check if this causes cpu-gpu sync + ) or seq_len >= self.end: # TODO @nouamane: check if this causes cpu-gpu sync self.end *= 2 self._initialized_buffer = False if self._initialized_buffer is False: @@ -130,21 +126,19 @@ def forward( self.init_rotary_embeddings() dtype = x.dtype assert inner_dim % 2 == 0 - x = x.view( - batch_size, seq_length, num_heads, inner_dim // 2, 2 - ) # [batch_size, q_length, num_heads, inner_dim] + x = x.view(batch_size, seq_len, num_heads, inner_dim // 2, 2) # [batch_size, q_length, num_heads, inner_dim] if x.dtype == torch.bfloat16: x = x.float() complex_x = torch.view_as_complex(x) # [batch_size, q_length, num_heads, inner_dim // 2] if position_ids is None: - freqs_cis = self.freqs_cis[None, :seq_length, None, :] + freqs_cis = self.freqs_cis[None, :seq_len, None, :] else: # TODO(kunhao): Should None follow the num_heads dimension? if position_ids[-1, -1] < 0 or position_ids[-1, -1] >= self.end: # Quick test hopefully raise ValueError(f"Position ids must be in the range [0, {self.end}), but got {position_ids}") freqs_cis = self.freqs_cis[position_ids][:, :, None, :] complex_freqs = torch.view_as_complex(freqs_cis) - x_out = torch.view_as_real(complex_x * complex_freqs).view(batch_size, seq_length, num_heads, inner_dim) + x_out = torch.view_as_real(complex_x * complex_freqs).view(batch_size, seq_len, num_heads, inner_dim) return x_out.type(dtype) @@ -197,7 +191,7 @@ def __init__( # TODO @nouamane: why can't we torch.jit.script GLUActivation? self.split_silu_mul = GLUActivation(config.hidden_act) - def forward(self, hidden_states): # [seq_length, batch_size, hidden_dim] + def forward(self, hidden_states): # [seq_len, batch_size, hidden_dim] merged_states = self.gate_up_proj(hidden_states) hidden_states = self.down_proj(self.split_silu_mul(merged_states)) return {"hidden_states": hidden_states} @@ -289,6 +283,720 @@ def pad_to_right(tensor, mask, new_tensor=None): from einops import einsum, rearrange, reduce from torchtyping import TensorType +# class CausalSelfAttention(nn.Module, AttachableStore): +# def __init__( +# self, +# config: LlamaConfig, +# parallel_config: Optional[ParallelismArgs], +# tp_pg: dist.ProcessGroup, +# layer_idx: int, +# ): +# from flash_attn.layers.rotary import RotaryEmbedding as FlashRotaryEmbedding + +# super().__init__() +# # Tensor parallel considerations: We split tensors along head dimension +# assert ( +# config.num_attention_heads % tp_pg.size() == 0 +# ), f"Number of attention heads ({config.num_attention_heads}) must be divisible by TP size ({tp_pg.size()})." +# try: +# assert ( +# config.num_key_value_heads % tp_pg.size() == 0 +# ), f"Number of key/value heads ({config.num_key_value_heads}) must be divisible by TP size ({tp_pg.size()})." +# except AttributeError: +# log_rank( +# "WARNING: num_key_value_heads not defined, assuming it is equal to num_attention_heads", +# logger=logger, +# level=logging.WARNING, +# rank=0, +# ) +# # If num_key_value_heads is not defined, we assume that it is equal to num_attention_heads +# config.num_key_value_heads = config.num_attention_heads +# assert ( +# config.num_attention_heads % config.num_key_value_heads == 0 +# ), f"Number of attention heads ({config.num_attention_heads}) must be divisible by number of key/value heads ({config.num_key_value_heads})." +# self.n_local_q_heads = config.num_attention_heads // tp_pg.size() +# self.n_local_kv_heads = config.num_key_value_heads // tp_pg.size() +# self.n_repeats = config.num_attention_heads // config.num_key_value_heads +# self.is_gqa = config.num_attention_heads != config.num_key_value_heads # Whether we are using GQA or not +# self.d_qk = config.hidden_size // config.num_attention_heads +# self.d_v = config.hidden_size // config.num_attention_heads +# self.d_model = config.hidden_size +# self.is_using_mup = config.is_using_mup + +# # TODO @thomasw21: refactor so that we store that default in a single place. +# tp_mode = parallel_config.tp_mode if parallel_config is not None else TensorParallelLinearMode.ALL_REDUCE +# tp_linear_async_communication = ( +# parallel_config.tp_linear_async_communication if parallel_config is not None else False +# ) + +# # build the slice config for self.qkv for save/load +# # shard are done within the contiguous chunk +# qkv_contiguous_chunks = ( +# config.num_attention_heads * self.d_qk, # shape of q +# config.num_key_value_heads * self.d_qk, # shape of k +# config.num_key_value_heads * self.d_qk, # shape of v +# ) +# self.config = config +# self.qkv_proj = TensorParallelColumnLinear( +# self.d_model, +# config.num_attention_heads * self.d_qk + 2 * config.num_key_value_heads * self.d_qk, +# pg=tp_pg, +# mode=tp_mode, +# bias=False, +# async_communication=tp_linear_async_communication, +# contiguous_chunks=qkv_contiguous_chunks, +# ) +# # TODO(kunhao): We want to have only one version per device and not one version per layer. +# self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings) +# log_rank( +# f"self.rotary_embedding.end is {self.rotary_embedding.end}", +# logger=logger, +# level=logging.INFO, +# rank=0, +# ) +# # self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=2048) + +# # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) +# self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) + +# self.o_proj = TensorParallelRowLinear( +# config.num_attention_heads * self.d_qk, +# self.d_model, +# pg=tp_pg, +# mode=tp_mode, +# bias=False, +# async_communication=tp_linear_async_communication, +# ) + +# self.attention = CoreAttention( +# config, +# parallel_config=parallel_config, +# layer_idx=layer_idx, +# ) +# self.layer_idx = layer_idx + +# self.prefill_kv_len = ( +# config.max_position_embeddings +# # 2048 +# ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings + +# # self.n_segments = 16 +# # self.segment_lengths = config.max_position_embeddings // self.n_segments +# # assert config.max_position_embeddings == 32768 + +# # NOTE: for 1b training +# self.segment_lengths = 2048 +# # self.segment_lengths = 4096 + +# # NOTE: for sanity 200m training +# # prev 16 +# # self.segment_lengths = 256 +# # self.segment_lengths = 16 + +# device = self.o_proj.weight.device +# dtype = self.o_proj.weight.dtype + +# from nanotron.parallel.sharded_parameters import SplitConfig, create_sharded_parameter_from_config + +# balance_factors = nn.Parameter(torch.zeros(self.n_local_q_heads, device=device, dtype=dtype)) +# self.balance_factors = create_sharded_parameter_from_config( +# parameter=balance_factors, +# pg=tp_pg, +# split_config=SplitConfig( +# split_dim=0, +# # contiguous_chunks=(self.n_local_heads, self.n_local_heads) +# ), +# ) + +# def forward( +# self, +# # hidden_states: TensorType["sharded_seq_len", "batch_size", "hidden_size"], +# hidden_states: TensorType["sharded_batch_size", "seq_len", "hidden_size"], +# sequence_mask: TensorType["batch_size", "seq_len"], +# ): +# # if self.layer_idx == 4: +# # assert 1 == 1 + +# # batch_size = hidden_states.shape[1] +# # seq_len = hidden_states.shape[0] + +# batch_size = hidden_states.shape[0] +# seq_len = hidden_states.shape[1] + +# # assert seq_len == 1024 +# # assert seq_len == 32768 + +# # assert seq_len % self.n_segments == 0 + +# # segment_length = seq_len // self.n_segments +# # hidden_size = hidden_states.shape[2] + +# if seq_len > self.segment_lengths: +# # n_segments = seq_len // self.segment_lengths +# # segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) +# # segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) + +# import math + +# n_segments = math.ceil(seq_len / self.segment_lengths) +# segment_lengths = [self.segment_lengths] * (n_segments - 1) + [ +# seq_len - (n_segments - 1) * self.segment_lengths +# ] +# assert sum(segment_lengths) == seq_len +# # assert hidden_states.shape[0] == seq_len +# assert hidden_states.shape[1] == seq_len +# # segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=0) +# segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=1) +# # NOTE: assume that mask are all the same +# # because we split across sequence length +# # NOTE: take the assumption that all the masks are the same +# assert torch.all(sequence_mask) +# segment_sequence_masks = torch.split(sequence_mask[:, :seq_len], segment_lengths, dim=1) +# else: +# segment_hidden_states = [hidden_states] +# segment_sequence_masks = [sequence_mask] + +# memory = None +# normalization = None + +# # memory = prev_memory +# # normalization = prev_normalization + +# outputs = [] + +# # sequence_masks = [] +# idx = 0 +# logs = {} + +# for segment_hidden_state, segment_sequence_mask in zip(segment_hidden_states, segment_sequence_masks): +# # if idx == 1: +# # memory = None +# # normalization = None + +# attn_outputs = self.forward_with_hidden_states( +# hidden_states=segment_hidden_state, sequence_mask=segment_sequence_mask, return_qkv_states=True +# ) + +# local_attn_outputs = attn_outputs["attention_output"] +# # query_states, key_states, value_states = attn_outputs["qkv_states"] +# query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] + +# # # NOTE: these are the shape for non-megatron-sp +# # assert query_states.shape[0] == self.segment_lengths +# # assert local_attn_outputs.shape[1] == self.segment_lengths + +# query_states = rearrange( +# query_states, +# "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", +# seq_len=self.segment_lengths, +# n_heads=self.n_local_q_heads, +# d_head=self.d_qk, +# ) + +# key_states = rearrange( +# key_states, +# "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", +# # batch_size=batch_size, +# seq_len=self.segment_lengths, +# n_heads=self.n_local_kv_heads, +# d_head=self.d_qk, +# ) + +# value_states = rearrange( +# value_states, +# "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", +# # batch_size=batch_size, +# seq_len=self.segment_lengths, +# n_heads=self.n_local_kv_heads, +# d_head=self.d_qk, +# ) + +# # NOTE: because in generation, the sequence length increases +# # assert query_states.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) +# # assert query_states.shape == key_states.shape == value_states.shape +# retrieved_memory = self._retrieve_from_memory( +# query_states, prev_memory=memory, prev_normalization=normalization +# ) + +# # log_rank( +# # f"[idx={idx}] retrieved_memory.shape = {retrieved_memory.shape}, retrieve_memory is zero? {(retrieved_memory == 0).all()}", +# # logger=logger, +# # level=logging.INFO, +# # rank=0, +# # ) + +# # if memory is not None: +# # log_rank( +# # f"[idx={idx}] memory.shape = {memory.shape}, normalization.shape = {normalization.shape}", +# # logger=logger, +# # level=logging.INFO, +# # rank=0, +# # ) + +# # retrieved_memory = retrieved_memory.detach() + +# # local_attn_outputs = rearrange( +# # local_attn_outputs, +# # "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", +# # d_head=self.d_qk, +# # ) +# local_attn_outputs = rearrange( +# local_attn_outputs, +# "batch_size seq_len (n_heads d_head) -> batch_size n_heads seq_len d_head", +# seq_len=self.segment_lengths, +# d_head=self.d_qk, +# ) + +# # log_rank( +# # f"[idx={idx}] local_attn_outputs.shape = {local_attn_outputs.shape}, local_attn_outputs is zero? {(local_attn_outputs == 0).all()}", +# # logger=logger, +# # level=logging.INFO, +# # rank=0, +# # ) + +# global_weights = F.sigmoid(self.balance_factors) +# global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") + +# local_weights = 1 - F.sigmoid(self.balance_factors) +# local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") + +# # assert torch.allclose(global_weights + local_weights, torch.ones_like(global_weights)) + +# # log_rank( +# # f"[idx={idx}] global_weights.shape = {global_weights.shape}, global_weights: {global_weights}", +# # logger=logger, +# # level=logging.INFO, +# # rank=0, +# # ) + +# # log_rank( +# # f"[idx={idx}] local_weights.shape = {local_weights.shape}, local_weights: {local_weights}", +# # logger=logger, +# # level=logging.INFO, +# # rank=0, +# # ) + +# attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs + +# attention_output = rearrange( +# attention_output, "batch_size n_heads seq_len d_head -> seq_len batch_size (n_heads d_head)", +# n_heads=self.n_local_q_heads, +# d_head=self.d_qk, +# seq_len=self.segment_lengths, +# ) + +# output = self.o_proj(attention_output) + +# if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % 50 == 0: +# if dist.get_rank() == 0: +# logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) +# logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) +# logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) + +# logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) +# logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) +# logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) +# logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) +# logs[f"layer_{self.layer_idx}:seg_{idx}:attention_output"] = compute_stas(attention_output) +# logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) +# logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) +# logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) + +# # assert output.shape == (segment_length, batch_size, hidden_size) + +# memory, normalization = self._update_memory(memory, normalization, key_states, value_states) +# # memory = prev_memory if prev_memory is not None else 0.detach() + +# outputs.append(output) +# # memory, normalization = memory.detach(), normalization.detach() + +# idx += 1 + +# # NOTE: update memory +# # outputs = torch.cat(outputs, dim=0) # concat along sequence dimension +# outputs = torch.cat(outputs, dim=2) # concat along sequence dimension +# assert outputs.shape == hidden_states.shape + +# if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % 50 == 0: +# if dist.get_rank() == 0: +# import wandb + +# logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) +# wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) + +# # sequence_masks = torch.cat(sequence_masks, dim=1) +# # assert sequence_masks.shape == sequence_mask.shape +# return_outputs = { +# "hidden_states": outputs, +# "sequence_mask": sequence_mask, +# # "memory": memory, +# # "normalization": normalization, +# } +# return return_outputs + +# def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): +# # return torch.zeros_like(query_states) +# if prev_memory is None or prev_normalization is None: +# return torch.zeros_like(query_states) + +# assert (prev_memory is None and prev_normalization is None) or ( +# prev_memory is not None and prev_normalization is not None +# ) + +# if self.n_repeats > 1: +# from einops import repeat + +# prev_memory = repeat( +# prev_memory, +# "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", +# n=self.n_repeats, +# ) +# prev_normalization = repeat( +# prev_normalization, +# "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", +# n=self.n_repeats, +# ) + +# sigma_query_states = F.elu(query_states) + 1 +# retrieved_memory = einsum( +# sigma_query_states, +# prev_memory, +# "batch_size n_heads seq_len d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_len d_v", +# ) + +# denominator = einsum( +# sigma_query_states, +# prev_normalization, +# "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size n_heads seq_len", +# ) +# denominator = rearrange(denominator, "batch_size n_heads seq_len -> batch_size n_heads seq_len 1") +# # [batch_size, n_heads, seq_len, d_v] / [batch_size, n_heads, seq_len, 1], so each d_v is divide by the normalized value + +# # NOTE: because normalization is the sum of all the keys, so each word should have the same normalization +# retrieved_memory = retrieved_memory / denominator +# return retrieved_memory + +# def _update_memory(self, prev_memory, prev_normalization, key_states, value_states): +# assert (prev_memory is None and prev_normalization is None) or ( +# prev_memory is not None and prev_normalization is not None +# ) + +# sigma_key_states = F.elu(key_states) + 1 + +# if prev_memory is None or prev_normalization is None: +# new_value_states = value_states +# else: +# numerator = einsum( +# sigma_key_states, +# prev_memory, +# "batch_size n_heads seq_len d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_len d_v", +# ) +# denominator = einsum( +# sigma_key_states, +# prev_normalization, +# "batch_size n_heads seq_len d_k, batch_size n_heads d_k -> batch_size n_heads seq_len", +# ) +# denominator = rearrange(denominator, "batch_size n_heads seq_len -> batch_size n_heads seq_len 1") + +# prev_v = numerator / denominator +# new_value_states = value_states - prev_v + +# memory = torch.matmul(sigma_key_states.transpose(-2, -1), new_value_states) + +# normalization = reduce( +# sigma_key_states, "batch_size n_heads seq_len d_head -> batch_size n_heads d_head", reduction="sum" +# ) + +# memory += prev_memory if prev_memory is not None else 0 +# normalization += prev_normalization if prev_normalization is not None else 0 + +# return memory, normalization + +# def forward_with_hidden_states( +# self, +# hidden_states, # [seq_len, batch_size, hidden_size] +# sequence_mask, # [batch_size, seq_len] +# return_qkv_states: bool = False, +# ): +# from flash_attn import bert_padding +# from flash_attn.flash_attn_interface import ( +# flash_attn_varlen_func, +# flash_attn_with_kvcache, +# ) + +# qkv_states = self.qkv_proj( +# hidden_states +# ) # [seq_len, batch_size, n_local_q_heads * d_qk + 2 * n_local_kv_heads * d_qk] +# q_length, batch_size, _ = qkv_states.shape + +# if self.is_gqa: +# query_states, key_states, value_states = torch.split( +# qkv_states, +# [ +# self.n_local_q_heads * self.d_qk, +# self.n_local_kv_heads * self.d_qk, +# self.n_local_kv_heads * self.d_qk, +# ], +# dim=-1, +# ) + +# query_states = ( +# query_states.transpose(0, 1).contiguous().view(batch_size, q_length, self.n_local_q_heads, self.d_qk) +# ) +# key_states = ( +# key_states.transpose(0, 1).contiguous().view(batch_size, q_length, self.n_local_kv_heads, self.d_qk) +# ) +# value_states = ( +# value_states.transpose(0, 1).contiguous().view(batch_size, q_length, self.n_local_kv_heads, self.d_qk) +# ) +# else: +# query_states, key_states, value_states = ( +# qkv_states.view(q_length, batch_size, 3, self.n_local_q_heads, self.d_qk) +# .permute(2, 1, 0, 3, 4) +# .contiguous() +# ) # [3, batch_size, seq_len, n_local_q_heads, d_qk] + +# # query_states_without_pe = rearrange( +# # query_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" +# # ) +# # key_states_without_pe = rearrange( +# # key_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" +# # ) +# # value_states_without_pe = rearrange( +# # value_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" +# # ) + +# query_states_without_pe = rearrange( +# query_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head" +# ) +# key_states_without_pe = rearrange( +# key_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head" +# ) +# value_states_without_pe = rearrange( +# value_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head" +# ) + +# assert query_states_without_pe.shape[0] == self.segment_lengths + +# store = self.get_local_store() +# if store is not None: # Inference case +# # Double check that we use store only at inference time +# assert key_states.requires_grad is False +# assert value_states.requires_grad is False +# if "position_offsets" in store: +# old_position_offsets = store["position_offsets"] +# position_ids = old_position_offsets[:, None] + sequence_mask +# else: +# position_ids = torch.cumsum(sequence_mask, dim=-1, dtype=torch.int32) - 1 +# position_offsets = position_ids[:, -1] + +# # Compute rotary embeddings +# # Note: keep track of old rotary embedding end to check if we need to enlarge k_cache and v_cache +# old_rotary_embed_end = self.rotary_embedding.end +# query_states = self.rotary_embedding(query_states, position_ids=position_ids) +# key_states = self.rotary_embedding(key_states, position_ids=position_ids) + +# if "key" not in store: +# # First inference iteration (Prefill) +# # TODO @nouamane: support custom masking +# # assert that [ False, False, False, False, True, True, True, True, True, True] is accepted +# # but [ False, False, False, False, True, True, False, False, True, True] is not (can't mask in the middle of sequence) +# assert ~( +# sequence_mask[:, :-1] & (~sequence_mask[:, 1:]) # True is never followed by False +# ).any(), "Can't mask in the middle of sequence, please make sure that pads are at the left of the sequence if existing" + +# # preallocate k_cache, v_cache to self.prefill_kv_len +# k_cache = torch.zeros( +# ( +# batch_size, +# self.prefill_kv_len, +# self.n_local_kv_heads, +# self.d_qk, +# ), +# dtype=query_states.dtype, +# device=query_states.device, +# ) +# v_cache = torch.zeros( +# (batch_size, self.prefill_kv_len, self.n_local_kv_heads, self.d_v), +# dtype=query_states.dtype, +# device=query_states.device, +# ) +# # Remove pad tokens from key_states and concatenate samples in key_unpad +# # cu_seqlens_k is the cumulative sequence lengths of key_states +# (query_unpad, indices_q, cu_seqlens_q, max_seqlen_q) = bert_padding.unpad_input( +# query_states, +# sequence_mask, +# ) +# (key_unpad, indices_k, cu_seqlens_k, max_seqlen_k) = bert_padding.unpad_input( +# key_states, sequence_mask +# ) +# (value_unpad, _, _, _) = bert_padding.unpad_input(value_states, sequence_mask) + +# # NOTE: this scale is for µTransfer, +# # in SP, we use sqrt(1/d_h) +# softmax_scale = 1 / query_states.shape[-1] if self.is_using_mup else None +# output_unpad = flash_attn_varlen_func( +# q=query_unpad, # (total_q, n_local_q_heads, d_qk) +# k=key_unpad, # (total_kv, n_local_kv_heads, d_qk) +# v=value_unpad, # (total_kv, n_local_kv_heads, d_v) +# cu_seqlens_q=cu_seqlens_q, +# cu_seqlens_k=cu_seqlens_k, +# max_seqlen_q=max_seqlen_q, +# max_seqlen_k=max_seqlen_k, +# dropout_p=0.0, +# softmax_scale=softmax_scale, +# causal=True, # True in prefill phase, False in subsequent phases +# return_attn_probs=False, +# ) # (total_unpadded, n_local_q_heads, d_v) + +# attention_output = bert_padding.pad_input( +# output_unpad, indices_q, batch_size, q_length +# ) # (batch_size, q_length, n_local_q_heads, d_v) + +# pad_to_right(key_states, sequence_mask, new_tensor=k_cache) +# pad_to_right(value_states, sequence_mask, new_tensor=v_cache) + +# else: +# # Pull pre-computed key/value states +# # Subsequent inference iterations (q_length=1) +# k_cache = store["key"] +# v_cache = store["value"] + +# # NOTE(fmom): According to flash_attn_with_kvcache, "If you pass in k / v, you must make sure that the cache is large enough to hold the new values" +# # Since rotary embedding has changed (to enable larger context), we need to enlarge k_cache and v_cache +# if self.rotary_embedding.end > old_rotary_embed_end: +# k_cache = torch.cat( +# [ +# k_cache, +# torch.zeros( +# ( +# batch_size, +# self.rotary_embedding.end - old_rotary_embed_end, +# self.n_local_kv_heads, +# self.d_qk, +# ), +# dtype=query_states.dtype, +# device=query_states.device, +# ), +# ], +# dim=1, +# ) + +# v_cache = torch.cat( +# [ +# v_cache, +# torch.zeros( +# ( +# batch_size, +# self.rotary_embedding.end - old_rotary_embed_end, +# self.n_local_kv_heads, +# self.d_v, +# ), +# dtype=query_states.dtype, +# device=query_states.device, +# ), +# ], +# dim=1, +# ) + +# assert ( +# k_cache.shape[1] == self.rotary_embedding.end +# ), f"Cache size {k_cache.shape[1]} is smaller than rotary embedding end {self.rotary_embedding.end}" +# assert ( +# v_cache.shape[1] == self.rotary_embedding.end +# ), f"Cache size {v_cache.shape[1]} is smaller than rotary embedding end {self.rotary_embedding.end}" + +# # [batch_size, seq_len, num_heads, d_qk] +# query_states = query_states.view( +# batch_size, q_length, self.n_local_q_heads, self.d_qk +# ) # [batch_size, q_length, self.n_heads, d_qk] +# kv_length = key_states.shape[1] +# key_states = key_states.view( +# batch_size, kv_length, self.n_local_kv_heads, self.d_qk +# ) # [batch_size, kv_length, self.n_heads, d_qk] +# value_states = value_states.view( +# batch_size, kv_length, self.n_local_kv_heads, self.d_v +# ) # [batch_size, kv_length, self.n_heads, d_v] + +# # NOTE: this scale is for µTransfer, +# # in SP, we use sqrt(1/d_h) +# softmax_scale = 1 / query_states.shape[-1] if self.is_using_mup else None +# attention_output = flash_attn_with_kvcache( +# query_states, +# k_cache, +# v_cache, +# key_states, +# value_states, +# rotary_cos=None, +# rotary_sin=None, +# # TODO @nouamane: seems like this doesn't help to indicate padding in (for first iteration it's just 0) +# cache_seqlens=position_offsets.contiguous(), +# softmax_scale=softmax_scale, +# causal=True, +# rotary_interleaved=False, # GPT-NeoX style +# ) + +# store.update( +# { +# "key": k_cache, # flash-attn has updated with new key_states using cache_seqlens +# "value": v_cache, +# "position_offsets": position_offsets, +# } +# ) + +# else: # Training case +# # Apply rotary embeddings to query/key states +# # NOTE: The layout is different from models/llama.py which is [batch_size, num_heads, seq_len, d_qk] +# # Here it is, [batch_size, seq_len, num_heads, d_qk] +# # [2, batch_size, seq_len, num_heads, d_qk] +# key_value_states = torch.cat([key_states.unsqueeze(0), value_states.unsqueeze(0)], dim=0) +# # [batch_size, seq_len, 2, num_heads, d_qk] +# key_value_states = key_value_states.permute(1, 2, 0, 3, 4).contiguous() +# query_states, key_value_states = self.flash_rotary_embedding(query_states, kv=key_value_states) +# # [batch_size, seq_len, num_heads, d_qk] +# key_states, value_states = torch.split(key_value_states, 1, dim=2) + +# q_sequence_mask = sequence_mask +# kv_sequence_mask = sequence_mask + +# kv_length = key_states.shape[1] +# # [batch_size, seq_len, num_heads, d_qk] +# # Shaping for use in `flash-attn` version of flash-attn: `flash_attn_unpadded_func` +# query_states = query_states.view( +# batch_size * q_length, self.n_local_q_heads, self.d_qk +# ) # [batch_size * q_length, self.n_heads, d_qk] + +# key_states = key_states.view( +# batch_size * kv_length, self.n_local_kv_heads, self.d_qk +# ) # [batch_size * kv_length, self.n_heads, d_qk] +# value_states = value_states.view( +# batch_size * kv_length, self.n_local_kv_heads, self.d_v +# ) # [batch_size * kv_length, self.n_heads, d_v] + +# attention_output = self.attention( +# query_states=query_states, +# key_states=key_states, +# value_states=value_states, +# q_sequence_mask=q_sequence_mask, +# kv_sequence_mask=kv_sequence_mask, +# ) + +# attention_output = ( +# attention_output.contiguous().view(batch_size, q_length, self.n_local_q_heads * self.d_v).transpose(0, 1) +# ) +# # output = self.o_proj(attention_output) +# # return {"hidden_states": output, "sequence_mask": sequence_mask} + +# return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} +# return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () +# return_outputs["qkv_states_without_pe"] = ( +# query_states_without_pe, +# key_states_without_pe, +# value_states_without_pe, +# ) +# return_outputs["attention_output"] = attention_output +# return return_outputs + class CausalSelfAttention(nn.Module, AttachableStore): def __init__( @@ -343,6 +1051,7 @@ def __init__( config.num_key_value_heads * self.d_qk, # shape of k config.num_key_value_heads * self.d_qk, # shape of v ) + self.config = config self.qkv_proj = TensorParallelColumnLinear( self.d_model, config.num_attention_heads * self.d_qk + 2 * config.num_key_value_heads * self.d_qk, @@ -391,8 +1100,9 @@ def __init__( # assert config.max_position_embeddings == 32768 # NOTE: for 1b training - self.segment_lengths = 2048 + # self.segment_lengths = 2048 # self.segment_lengths = 4096 + self.segment_lengths = 1024 # for 4096 context length # NOTE: for sanity 200m training # prev 16 @@ -416,8 +1126,9 @@ def __init__( def forward( self, - hidden_states: TensorType["sharded_seq_length", "batch_size", "hidden_size"], - sequence_mask: TensorType["batch_size", "seq_length"], + # hidden_states: TensorType["sharded_seq_len", "batch_size", "hidden_size"], + hidden_states: TensorType["sharded_batch_size", "seq_len", "hidden_size"], + sequence_mask: TensorType["batch_size", "seq_len"], ): # if self.layer_idx == 4: # assert 1 == 1 @@ -425,7 +1136,7 @@ def forward( # batch_size = hidden_states.shape[1] # seq_len = hidden_states.shape[0] - batch_size = hidden_states.shape[0] + hidden_states.shape[0] seq_len = hidden_states.shape[1] # assert seq_len == 1024 @@ -486,34 +1197,39 @@ def forward( # query_states, key_states, value_states = attn_outputs["qkv_states"] query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] - if query_states.ndim == 3: - query_states = rearrange( - query_states, - "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", - batch_size=batch_size, - # n_heads=self.n_local_heads, - ) + # # NOTE: these are the shape for non-megatron-sp + # assert query_states.shape[0] == self.segment_lengths + # assert local_attn_outputs.shape[1] == self.segment_lengths - if key_states.ndim == 3: - key_states = rearrange( - key_states, - "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", - batch_size=batch_size, - # n_heads=self.n_local_heads, - ) + query_states = rearrange( + query_states, + "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", + # seq_len=self.segment_lengths, + n_heads=self.n_local_q_heads, + d_head=self.d_qk, + ) - if value_states.ndim == 3: - value_states = rearrange( - value_states, - "(batch_size seq_len) n_heads d_head -> batch_size n_heads seq_len d_head", - batch_size=batch_size, - # n_heads=self.n_local_heads, - ) + key_states = rearrange( + key_states, + "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", + # batch_size=batch_size, + # seq_len=self.segment_lengths, + n_heads=self.n_local_kv_heads, + d_head=self.d_qk, + ) + + value_states = rearrange( + value_states, + "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", + # batch_size=batch_size, + # seq_len=self.segment_lengths, + n_heads=self.n_local_kv_heads, + d_head=self.d_qk, + ) # NOTE: because in generation, the sequence length increases # assert query_states.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) # assert query_states.shape == key_states.shape == value_states.shape - retrieved_memory = self._retrieve_from_memory( query_states, prev_memory=memory, prev_normalization=normalization ) @@ -535,9 +1251,15 @@ def forward( # retrieved_memory = retrieved_memory.detach() + # local_attn_outputs = rearrange( + # local_attn_outputs, + # "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", + # d_head=self.d_qk, + # ) local_attn_outputs = rearrange( local_attn_outputs, - "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", + "batch_size seq_len (n_heads d_head) -> batch_size n_heads seq_len d_head", + # seq_len=self.segment_lengths, d_head=self.d_qk, ) @@ -571,17 +1293,18 @@ def forward( # ) attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs - # attention_output = local_weights * local_attn_outputs - - # assert attention_output.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) attention_output = rearrange( - attention_output, "batch_size n_heads seq_len d_head -> seq_len batch_size (n_heads d_head)" + attention_output, + "batch_size n_heads seq_len d_head -> batch_size seq_len (n_heads d_head)", + n_heads=self.n_local_q_heads, + d_head=self.d_qk, + # seq_len=self.segment_lengths, ) output = self.o_proj(attention_output) - if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % 50 == 0: + if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0: if dist.get_rank() == 0: logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) @@ -611,7 +1334,7 @@ def forward( outputs = torch.cat(outputs, dim=1) # concat along sequence dimension assert outputs.shape == hidden_states.shape - if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % 50 == 0: + if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0: if dist.get_rank() == 0: import wandb @@ -637,34 +1360,45 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): prev_memory is not None and prev_normalization is not None ) - if self.n_repeats > 1: - from einops import repeat + # if self.n_repeats > 1: + # from einops import repeat - prev_memory = repeat( - prev_memory, - "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", - n=self.n_repeats, - ) - prev_normalization = repeat( - prev_normalization, - "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", - n=self.n_repeats, - ) + # prev_memory = repeat( + # prev_memory, + # "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", + # n=self.n_repeats, + # ) + # prev_normalization = repeat( + # prev_normalization, + # "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", + # n=self.n_repeats, + # ) sigma_query_states = F.elu(query_states) + 1 retrieved_memory = einsum( sigma_query_states, prev_memory, - "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", + "batch_size n_heads seq_len d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_len d_v", + # seq_len=self.segment_lengths, + # n_heads=self.n_local_kv_heads, + # d_k=self.d_qk, ) denominator = einsum( sigma_query_states, prev_normalization, - "batch_size n_heads seq_length d_head, batch_size n_heads d_head -> batch_size n_heads seq_length", + "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size n_heads seq_len", + # n_heads=self.n_local_kv_heads, + # d_head=self.d_qk, + # seq_len=self.segment_lengths, + ) + denominator = rearrange( + denominator, + "batch_size n_heads seq_len -> batch_size n_heads seq_len 1", + # n_heads=self.n_local_kv_heads, + # seq_len=self.segment_lengths, ) - denominator = rearrange(denominator, "batch_size n_heads seq_length -> batch_size n_heads seq_length 1") - # [batch_size, n_heads, seq_length, d_v] / [batch_size, n_heads, seq_length, 1], so each d_v is divide by the normalized value + # [batch_size, n_heads, seq_len, d_v] / [batch_size, n_heads, seq_len, 1], so each d_v is divide by the normalized value # NOTE: because normalization is the sum of all the keys, so each word should have the same normalization retrieved_memory = retrieved_memory / denominator @@ -683,14 +1417,25 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat numerator = einsum( sigma_key_states, prev_memory, - "batch_size n_heads seq_length d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_length d_v", + "batch_size n_heads seq_len d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_len d_v", + # n_heads=self.n_local_kv_heads, + # d_k=self.d_qk, + # seq_len=self.segment_lengths, ) denominator = einsum( sigma_key_states, prev_normalization, - "batch_size n_heads seq_length d_k, batch_size n_heads d_k -> batch_size n_heads seq_length", + "batch_size n_heads seq_len d_k, batch_size n_heads d_k -> batch_size n_heads seq_len", + # n_heads=self.n_local_kv_heads, + # d_k=self.d_qk, + # seq_len=self.segment_lengths, + ) + denominator = rearrange( + denominator, + "batch_size n_heads seq_len -> batch_size n_heads seq_len 1", + # n_heads=self.n_local_kv_heads, + # seq_len=self.segment_lengths, ) - denominator = rearrange(denominator, "batch_size n_heads seq_length -> batch_size n_heads seq_length 1") prev_v = numerator / denominator new_value_states = value_states - prev_v @@ -698,7 +1443,12 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat memory = torch.matmul(sigma_key_states.transpose(-2, -1), new_value_states) normalization = reduce( - sigma_key_states, "batch_size n_heads seq_length d_head -> batch_size n_heads d_head", reduction="sum" + sigma_key_states, + "batch_size n_heads seq_len d_head -> batch_size n_heads d_head", + reduction="sum", + n_heads=self.n_local_kv_heads, + d_head=self.d_qk, + # seq_len=self.segment_lengths, ) memory += prev_memory if prev_memory is not None else 0 @@ -708,8 +1458,8 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat def forward_with_hidden_states( self, - hidden_states, # [seq_length, batch_size, hidden_size] - sequence_mask, # [batch_size, seq_length] + hidden_states, # [seq_len, batch_size, hidden_size] + sequence_mask, # [batch_size, seq_len] return_qkv_states: bool = False, ): from flash_attn import bert_padding @@ -718,9 +1468,11 @@ def forward_with_hidden_states( flash_attn_with_kvcache, ) + seq_len = hidden_states.shape[1] + qkv_states = self.qkv_proj( hidden_states - ) # [seq_length, batch_size, n_local_q_heads * d_qk + 2 * n_local_kv_heads * d_qk] + ) # [seq_len, batch_size, n_local_q_heads * d_qk + 2 * n_local_kv_heads * d_qk] q_length, batch_size, _ = qkv_states.shape if self.is_gqa: @@ -748,18 +1500,40 @@ def forward_with_hidden_states( qkv_states.view(q_length, batch_size, 3, self.n_local_q_heads, self.d_qk) .permute(2, 1, 0, 3, 4) .contiguous() - ) # [3, batch_size, seq_length, n_local_q_heads, d_qk] + ) # [3, batch_size, seq_len, n_local_q_heads, d_qk] + + # query_states_without_pe = rearrange( + # query_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + # ) + # key_states_without_pe = rearrange( + # key_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + # ) + # value_states_without_pe = rearrange( + # value_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + # ) query_states_without_pe = rearrange( - query_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + query_states, + "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", + # seq_len=self.segment_lengths, + seq_len=seq_len, ) key_states_without_pe = rearrange( - key_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + key_states, + "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", + # seq_len=self.segment_lengths, + seq_len=seq_len, ) value_states_without_pe = rearrange( - value_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" + value_states, + "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", + # seq_len=self.segment_lengths, + seq_len=seq_len, ) + # assert query_states_without_pe.shape[0] == self.segment_lengths + assert query_states_without_pe.shape[0] == seq_len + store = self.get_local_store() if store is not None: # Inference case # Double check that we use store only at inference time @@ -888,7 +1662,7 @@ def forward_with_hidden_states( v_cache.shape[1] == self.rotary_embedding.end ), f"Cache size {v_cache.shape[1]} is smaller than rotary embedding end {self.rotary_embedding.end}" - # [batch_size, seq_length, num_heads, d_qk] + # [batch_size, seq_len, num_heads, d_qk] query_states = query_states.view( batch_size, q_length, self.n_local_q_heads, self.d_qk ) # [batch_size, q_length, self.n_heads, d_qk] @@ -928,21 +1702,21 @@ def forward_with_hidden_states( else: # Training case # Apply rotary embeddings to query/key states - # NOTE: The layout is different from models/llama.py which is [batch_size, num_heads, seq_length, d_qk] - # Here it is, [batch_size, seq_length, num_heads, d_qk] - # [2, batch_size, seq_length, num_heads, d_qk] + # NOTE: The layout is different from models/llama.py which is [batch_size, num_heads, seq_len, d_qk] + # Here it is, [batch_size, seq_len, num_heads, d_qk] + # [2, batch_size, seq_len, num_heads, d_qk] key_value_states = torch.cat([key_states.unsqueeze(0), value_states.unsqueeze(0)], dim=0) - # [batch_size, seq_length, 2, num_heads, d_qk] + # [batch_size, seq_len, 2, num_heads, d_qk] key_value_states = key_value_states.permute(1, 2, 0, 3, 4).contiguous() query_states, key_value_states = self.flash_rotary_embedding(query_states, kv=key_value_states) - # [batch_size, seq_length, num_heads, d_qk] + # [batch_size, seq_len, num_heads, d_qk] key_states, value_states = torch.split(key_value_states, 1, dim=2) q_sequence_mask = sequence_mask kv_sequence_mask = sequence_mask kv_length = key_states.shape[1] - # [batch_size, seq_length, num_heads, d_qk] + # [batch_size, seq_len, num_heads, d_qk] # Shaping for use in `flash-attn` version of flash-attn: `flash_attn_unpadded_func` query_states = query_states.view( batch_size * q_length, self.n_local_q_heads, self.d_qk @@ -1053,7 +1827,7 @@ def __init__(self, tp_pg: dist.ProcessGroup, config: LlamaConfig, parallel_confi ) self.pg = tp_pg - def forward(self, input_ids: torch.Tensor, input_mask: torch.Tensor): # [batch_size, seq_length] + def forward(self, input_ids: torch.Tensor, input_mask: torch.Tensor): # [batch_size, seq_len] store = self.get_local_store() if store is not None: if "past_length" in store: @@ -1065,7 +1839,7 @@ def forward(self, input_ids: torch.Tensor, input_mask: torch.Tensor): # [batch_ # Store new past_length in store store["past_length"] = past_length + cumsum_mask[:, -1] - # Format input in `[seq_length, batch_size]` to support high TP with low batch_size + # Format input in `[seq_len, batch_size]` to support high TP with low batch_size # input_ids = input_ids.transpose(0, 1) input_embeds = self.token_embedding(input_ids) return {"input_embeds": input_embeds} @@ -1159,15 +1933,15 @@ def __init__( def forward( self, - input_ids: Union[torch.Tensor, TensorPointer], # [batch_size, seq_length] - input_mask: Union[torch.Tensor, TensorPointer], # [batch_size, seq_length] + input_ids: Union[torch.Tensor, TensorPointer], # [batch_size, seq_len] + input_mask: Union[torch.Tensor, TensorPointer], # [batch_size, seq_len] ): return self.forward_with_hidden_states(input_ids=input_ids, input_mask=input_mask)[0] def forward_with_hidden_states( self, - input_ids: Union[torch.Tensor, TensorPointer], # [batch_size, seq_length] - input_mask: Union[torch.Tensor, TensorPointer], # [batch_size, seq_length] + input_ids: Union[torch.Tensor, TensorPointer], # [batch_size, seq_len] + input_mask: Union[torch.Tensor, TensorPointer], # [batch_size, seq_len] ): # all tensors are optional as most ranks don't need anything from the dataloader. @@ -1241,9 +2015,9 @@ def __init__(self, tp_pg: dist.ProcessGroup): def forward( self, - sharded_logits: torch.Tensor, # [seq_length, batch_size, logits] - label_ids: torch.Tensor, # [batch_size, seq_length] - label_mask: torch.Tensor, # [batch_size, seq_length] + sharded_logits: torch.Tensor, # [seq_len, batch_size, logits] + label_ids: torch.Tensor, # [batch_size, seq_len] + label_mask: torch.Tensor, # [batch_size, seq_len] ) -> Dict[str, torch.Tensor]: # Megatron by defaults cast everything in fp32. `--f16-lm-cross-entropy` is an option you can use to keep current precision. # https://github.com/NVIDIA/Megatron-LM/blob/f267e6186eae1d6e2055b412b00e2e545a8e896a/megatron/model/gpt_model.py#L38 diff --git a/src/nanotron/parallel/pipeline_parallel/engine.py b/src/nanotron/parallel/pipeline_parallel/engine.py index 7ddabe25..babf875e 100644 --- a/src/nanotron/parallel/pipeline_parallel/engine.py +++ b/src/nanotron/parallel/pipeline_parallel/engine.py @@ -5,8 +5,8 @@ from torch import nn as torch_nn from torch.nn.parallel import DistributedDataParallel +from nanotron import constants, logging from nanotron import distributed as dist -from nanotron import logging from nanotron.distributed import ProcessGroup from nanotron.logging import log_rank from nanotron.optim.gradient_accumulator import GradientAccumulator @@ -284,19 +284,36 @@ def train_batch_iter( for micro_batch in batch: if dist.get_rank() == 0: - if self.idx == 1 or self.idx % 50 == 0: + # if self.idx == 1 or self.idx % 50 == 0: + if ( + constants.GLOBAL_STEP is not None + and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0 + ): decoded_texts = self.tokenizer.batch_decode(micro_batch["input_ids"]) + from typing import cast + + from nanotron.config import Config + + constants.CONFIG = cast(Config, constants.CONFIG) + run_name = constants.CONFIG.general.run + import random + + sample_index = random.randint(0, len(decoded_texts) - 1) with open( - "/fsx/phuc/projects/nanotron/examples/infinite-context-length/configs/exp19/training_inputs.txt", + f"/fsx/phuc/projects/nanotron/examples/infinite-context-length/training_logs/{run_name}_data_logs.txt", "a", ) as file: # Write the self.idx number and the decoded text to the file - file.write(f"idx: {self.idx}\n") - - for i, text in enumerate(decoded_texts): - file.write(f"####### text_i = {i}\n") - file.write(text + "\n\n\n") + file.write(f"iteration_step: {constants.GLOBAL_STEP}\n") + + # for i, text in enumerate(decoded_texts): + text = decoded_texts[sample_index] + file.write( + f"####### sample_index = {sample_index}, num_tokens={len(micro_batch['input_ids'][sample_index])}\n" + ) + file.write(f"raw_tokens: {micro_batch['input_ids'][sample_index].tolist()}" + "\n\n\n") + file.write(f"decoded_text: {text}" + "\n\n\n") context = self._get_fwd_context(model=model) output = self.forward(context=context, state=state, micro_batch=micro_batch, model=model) diff --git a/src/nanotron/trainer.py b/src/nanotron/trainer.py index 5fa872f3..e6b26534 100644 --- a/src/nanotron/trainer.py +++ b/src/nanotron/trainer.py @@ -23,8 +23,8 @@ from torch.nn.parallel import DistributedDataParallel from torch.utils.data import DataLoader +from nanotron import constants, logging from nanotron import distributed as dist -from nanotron import logging from nanotron.config import ( Config, DatasetStageArgs, @@ -131,6 +131,7 @@ def __init__( self.config = get_config_from_file( config_or_config_file, config_class=config_class, model_config_class=model_config_class ) + constants.CONFIG = self.config self.model_config = self.config.model.model_config if model_class is not None: CONFIG_TO_MODEL_CLASS[self.model_config.__class__.__name__] = model_class @@ -194,7 +195,11 @@ def __init__( # parallel_context=self.parallel_context, root_folder=self.init_checkpoint_path # ) - prev_config = get_config_from_file((self.init_checkpoint_path / "config.yaml").as_posix()) + prev_config = get_config_from_file( + (self.init_checkpoint_path / "config.yaml").as_posix(), + config_class=config_class, + model_config_class=model_config_class, + ) if ( prev_config.optimizer.accumulate_grad_in_fp32 is False and self.config.optimizer.accumulate_grad_in_fp32 is True @@ -426,14 +431,13 @@ def train( torch.cuda.empty_cache() with prof: for self.iteration_step in range(self.start_iteration_step + 1, self.config.tokens.train_steps + 1): - from nanotron import constants - constants.GLOBAL_STEP = self.iteration_step if isinstance(prof, torch.profiler.profile): prof.step() - nn_logs, nn_handles = monitor_nanotron_model(self.model, self.parallel_context) + if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: + nn_logs, nn_handles = monitor_nanotron_model(self.model, self.parallel_context) self.iteration_start_time = time.time() self._update_dataloader_based_on_training_stages(dataloader_or_dls) @@ -447,13 +451,14 @@ def train( if (self.iteration_step - 1) % self.config.logging.iteration_step_info_interval == 0: self.train_step_logs(outputs=outputs, loss_avg=loss_avg) - if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: + if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: from nanotron.debug.monitor import convert_logs_to_flat_logs - wandb.log({**convert_logs_to_flat_logs(nn_logs), "iteration_step": self.iteration_step}) + if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: + wandb.log({**convert_logs_to_flat_logs(nn_logs), "iteration_step": self.iteration_step}) - for handle in nn_handles: - handle.remove() + for handle in nn_handles: + handle.remove() # Checkpoint if self.iteration_step % self.config.checkpoints.checkpoint_interval == 0: @@ -471,10 +476,13 @@ def training_step( if self.iteration_step < 5: log_memory(logger=logger) + train_batches = (next(dataloader) for _ in range(self.n_micro_batches_per_batch)) + assert 1 == 1 + outputs = self.pipeline_engine.train_batch_iter( model=self.model, pg=self.parallel_context.pp_pg, - batch=(next(dataloader) for _ in range(self.n_micro_batches_per_batch)), + batch=train_batches, nb_microbatches=self.n_micro_batches_per_batch, grad_accumulator=self.grad_accumulator, ) @@ -677,6 +685,12 @@ def init_model(self) -> Union[NanotronModel, DistributedDataParallel]: rank=0, ) else: + log_rank( + f"max_position_embeddings is {self.model_config.max_position_embeddings} and sequence_length is {self.config.tokens.sequence_length}. But i don't set it here", + logger=logger, + level=logging.INFO, + rank=0, + ) # log_rank( # f"Setting max_position_embeddings to {self.config.tokens.sequence_length}. Previous value was {self.model_config.max_position_embeddings}.", # logger=logger, From 4e18fac57d8df89255dfc458ac8b00cbeb5e3698 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Wed, 29 May 2024 12:34:47 +0000 Subject: [PATCH 24/43] save run evals and generate data --- .../infinite-context-length/generate_data.py | 24 +- examples/infinite-context-length/run_evals.py | 2874 +++++++++++++++++ run_generate.py | 14 +- 3 files changed, 2901 insertions(+), 11 deletions(-) create mode 100644 examples/infinite-context-length/run_evals.py diff --git a/examples/infinite-context-length/generate_data.py b/examples/infinite-context-length/generate_data.py index 394f785d..48eace62 100644 --- a/examples/infinite-context-length/generate_data.py +++ b/examples/infinite-context-length/generate_data.py @@ -10,6 +10,20 @@ PROMPT = "{} {}. \n\n{}" +def get_keys_in_train_set(): + from datasets import load_dataset + + dataset = load_dataset("nanotron/needle_32k_finetuning_dataset") + + unique_answers = set() + for split in dataset.keys(): + for example in dataset[split]: + answer = example["answer"] + unique_answers.add(answer) + + return unique_answers + + def token_length(tokenizer, text): # Exclude EOS token return len(tokenizer.encode(text)) @@ -143,6 +157,8 @@ def get_args(): start_range = 1000 * (depth_percent + 1) * id end_range = start_range + start_range + keys_in_train_set = get_keys_in_train_set() + print( f"Generating prompts for context length: {context_length} and depth percent: {depth_percent} and id: {id} \n" ) @@ -150,7 +166,7 @@ def get_args(): def generate_dataset(): # num_prompts = 1700 - num_prompts = 100 + num_prompts = 5 # soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." soft_prompt = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on." # context_lengths = [ @@ -170,12 +186,12 @@ def generate_dataset(): while True: pass_key = random.randint(start_range, end_range) - if pass_key not in generated_pass_keys: + if pass_key not in keys_in_train_set and pass_key not in generated_pass_keys: generated_pass_keys.add(pass_key) break needle_prompt = f". The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " - retrieval_question = f"What is the pass key? The pass key is {pass_key}." + retrieval_question = "What is the pass key? The pass key is " prompt = generate_needle_in_haystack_test( pass_key, @@ -207,6 +223,6 @@ def generate_dataset(): # Save the dataset to disk dataset.save_to_disk( - f"/fsx/phuc/projects/nanotron/examples/infinite-context-length/needle_finetune_datasets/needle_finetuning_ctx_len_32768_and_depth_{depth_percent}_and_id_{id}" + f"/fsx/phuc/projects/nanotron/examples/infinite-context-length/needle_eval_datasets/needle_eval_ctx_len_32768_and_depth_{depth_percent}_and_id_{id}" ) # dataset.push_to_hub("nanotron/needle_in_a_hay_stack_finetuning_dataset") diff --git a/examples/infinite-context-length/run_evals.py b/examples/infinite-context-length/run_evals.py new file mode 100644 index 00000000..98f18e20 --- /dev/null +++ b/examples/infinite-context-length/run_evals.py @@ -0,0 +1,2874 @@ +""" +Nanotron Inference Script + +Usage: +``` +export CUDA_DEVICE_MAX_CONNECTIONS=1 # important for some distributed operations +torchrun --nproc_per_node=4 run_generate.py ---ckpt-path checkpoints/test/4 +``` +""" + +import argparse +import os +from pathlib import Path + +import torch +from nanotron import distributed as dist +from nanotron import logging +from nanotron.config import ( + GenerationArgs, + LoggingArgs, + ParallelismArgs, + get_config_from_file, +) +from nanotron.generation.decode import ( + GenerationInput, + TokenizerConfig, + decode_text, +) +from nanotron.logging import log_rank, set_ranks_logging_level +from nanotron.models import build_model +from nanotron.parallel import ParallelContext +from nanotron.parallel.parameters import sanity_check +from nanotron.parallel.pipeline_parallel.engine import ( + OneForwardOneBackwardPipelineEngine, +) +from nanotron.parallel.pipeline_parallel.tensor_pointer import TensorPointer +from nanotron.parallel.tensor_parallel.enum import TensorParallelLinearMode +from nanotron.random import ( + RandomStates, + get_current_random_state, + get_synced_random_state, + set_random_seed, +) +from nanotron.serialize import load_weights +from nanotron.trainer import CONFIG_TO_MODEL_CLASS, mark_tied_parameters + +try: + from transformers import AutoTokenizer +except ImportError: + AutoTokenizer = None + +logger = logging.get_logger(__name__) + + +def get_args(): + parser = argparse.ArgumentParser() + parser.add_argument("--ckpt-path", type=Path, required=True, help="Checkpoint path") + parser.add_argument("--dp", type=int, default=0) + parser.add_argument("--pp", type=int, default=0) + parser.add_argument("--tp", type=int, default=0) + parser.add_argument("--max-new-tokens", type=int, default=30, help="Maximum number of new tokens to generate") + parser.add_argument("--context_length", type=int, required=True) + parser.add_argument("--depth_percent", type=int, required=True) + return parser.parse_args() + + +def generate(args, model, tokenizer, inputs, parallel_context) -> bool: + outputs = decode_text( + input_iter=(GenerationInput(text=text) for text in inputs), + tokenizer=tokenizer, + # TODO @thomasw21: From ModelWithLoss extract the model. + model=model.model, + parallel_context=parallel_context, + max_new_tokens=args.max_new_tokens, + max_micro_batch_size=1, + generation_config=GenerationArgs(sampler="greedy", use_cache=False), + tokenizer_config=TokenizerConfig(max_input_length=None), + is_bench=os.environ.get("USE_BENCH", "0") == "1", + ) + responses = [] + for output in outputs: + input_ids = output.input_ids + generated_ids = output.generation_ids + answer_ids = generated_ids[len(input_ids) :] + decoded_answer = tokenizer.decode(answer_ids, clean_up_tokenization_spaces=False) + + if isinstance(input_ids, TensorPointer): + assert isinstance(generated_ids, TensorPointer) + continue + assert isinstance(generated_ids, torch.Tensor) + + log_rank( + # f"input: {tokenizer.decode(input_ids, clean_up_tokenization_spaces=False)[:1000]}", + f"input: {tokenizer.decode(input_ids, clean_up_tokenization_spaces=False)}", + logger=logger, + level=logging.INFO, + rank=0, + ) + + log_rank( + f"generation: {decoded_answer}", + logger=logger, + level=logging.INFO, + rank=0, + ) + + log_rank( + "--------------------------------------------------", + logger=logger, + level=logging.INFO, + rank=0, + ) + + responses.append(decoded_answer) + + return responses + + +TEXT = """The United States Army (USA) is the land service branch of the United States Armed Forces. It is one of the eight U.S. uniformed services, and is designated as the Army of the United States in the U.S. Constitution.[14] The Army is the oldest branch of the U.S. military and the most senior in order of precedence.[15] It has its roots in the Continental Army, which was formed on 14 June 1775 to fight against the British for independence during the American Revolutionary War (1775–1783).[16] After the Revolutionary War, the Congress of the Confederation created the United States Army on 3 June 1784 to replace the disbanded Continental Army.[17][18] The United States Army considers itself a continuation of the Continental Army, and thus considers its institutional inception to be the origin of that armed force in 1775.[16] + +The U.S. Army is a uniformed service of the United States and is part of the Department of the Army, which is one of the three military departments of the Department of Defense. The U.S. Army is headed by a civilian senior appointed civil servant, the secretary of the Army (SECARMY), and by a chief military officer, the chief of staff of the Army (CSA) who is also a member of the Joint Chiefs of Staff. It is the largest military branch, and in the fiscal year 2022, the projected end strength for the Regular Army (USA) was 480,893 soldiers; the Army National Guard (ARNG) had 336,129 soldiers and the U.S. Army Reserve (USAR) had 188,703 soldiers; the combined-component strength of the U.S. Army was 1,005,725 soldiers.[19] As a branch of the armed forces, the mission of the U.S. Army is 'to fight and win our Nation's wars, by providing prompt, sustained land dominance, across the full range of military operations and the spectrum of conflict, in support of combatant commanders'.[20] The branch participates in conflicts worldwide and is the major ground-based offensive and defensive force of the United States of America.‌ + +Mission +The United States Army serves as the land-based branch of the U.S. Armed Forces. Section 7062 of Title 10, U.S. Code defines the purpose of the army as:[21][22] + +Preserving the peace and security and providing for the defense of the United States, the Commonwealths and possessions, and any areas occupied by the United States +Supporting the national policies +Implementing the national objectives +Overcoming any nations responsible for aggressive acts that imperil the peace and security of the United States +In 2018, the Army Strategy 2018 articulated an eight-point addendum to the Army Vision for 2028.[23] While the Army Mission remains constant, the Army Strategy builds upon the Army's Brigade Modernization by adding focus to corps and division-level echelons.[23] The Army Futures Command oversees reforms geared toward conventional warfare. The Army's current reorganization plan is due to be completed by 2028.[23] + +The Army's five core competencies are prompt and sustained land combat, combined arms operations (to include combined arms maneuver and wide–area security, armored and mechanized operations and airborne and air assault operations), special operations forces, to set and sustain the theater for the joint force, and to integrate national, multinational, and joint power on land.[24] + +History +Main article: History of the United States Army +Origins +The Continental Army was created on 14 June 1775 by the Second Continental Congress[25] as a unified army for the colonies to fight Great Britain, with George Washington appointed as its commander.[16][26][27][28] The army was initially led by men who had served in the British Army or colonial militias and who brought much of British military heritage with them. As the Revolutionary War progressed, French aid, resources, and military thinking helped shape the new army. A number of European soldiers came on their own to help, such as Friedrich Wilhelm von Steuben, who taught Prussian Army tactics and organizational skills. + + +The storming of Redoubt No. 10 in the Siege of Yorktown during the American Revolutionary War prompted Great Britain's government to begin negotiations, resulting in the Treaty of Paris and Great Britain's recognition of the United States as an independent state. +The Army fought numerous pitched battles, and sometimes used Fabian strategy and hit-and-run tactics in the South in 1780 and 1781; under Major General Nathanael Greene, it hit where the British were weakest to wear down their forces. Washington led victories against the British at Trenton and Princeton, but lost a series of battles in the New York and New Jersey campaign in 1776 and the Philadelphia campaign in 1777. With a decisive victory at Yorktown and the help of the French, the Continental Army prevailed against the British. + +After the war, the Continental Army was quickly given land certificates and disbanded in a reflection of the republican distrust of standing armies. State militias became the new nation's sole ground army, except a regiment to guard the Western Frontier and one battery of artillery guarding West Point's arsenal. However, because of continuing conflict with Native Americans, it was soon considered necessary to field a trained standing army. The Regular Army was at first very small and after General St. Clair's defeat at the Battle of the Wabash,[29] where more than 800 soldiers were killed, the Regular Army was reorganized as the Legion of the United States, established in 1791 and renamed the United States Army in 1796. + +In 1798, during the Quasi-War with France, the U.S. Congress established a three-year 'Provisional Army' of 10,000 men, consisting of twelve regiments of infantry and six troops of light dragoons. In March 1799, Congress created an 'Eventual Army' of 30,000 men, including three regiments of cavalry. Both 'armies' existed only on paper, but equipment for 3,000 men and horses was procured and stored.[30] + +19th century +War of 1812 and Indian Wars +Further information: War of 1812 and Army on the Frontier + +General Andrew Jackson standing on the parapet of his makeshift defenses as his troops repulse attacking Highlanders during the defense of New Orleans, the final major and most one-sided battle of the War of 1812, mainly fought by militia and volunteers. +The War of 1812, the second and last war between the United States and Great Britain, had mixed results. The U.S. Army did not conquer Canada but it did destroy Native American resistance to expansion in the Old Northwest and it validated its independence by stopping two major British invasions in 1814 and 1815. After taking control of Lake Erie in 1813, the U.S. Army seized parts of western Upper Canada, burned York and defeated Tecumseh, which caused his Western Confederacy to collapse. Following U.S. victories in the Canadian province of Upper Canada, British troops who had dubbed the U.S. Army 'Regulars, by God!', were able to capture and burn Washington, which was defended by militia, in 1814. The regular army, however, proved they were professional and capable of defeating the British army during the invasions of Plattsburgh and Baltimore, prompting British agreement on the previously rejected terms of a status quo antebellum.[dubious – discuss] Two weeks after a treaty was signed (but not ratified), Andrew Jackson defeated the British in the Battle of New Orleans and siege of Fort St. Philip with an army dominated by militia and volunteers, and became a national hero. U.S. troops and sailors captured HMS Cyane, Levant and Penguin in the final engagements of the war. Per the treaty, both sides (the United States and Great Britain) returned to the geographical status quo. Both navies kept the warships they had seized during the conflict. + +The army's major campaign against the Indians was fought in Florida against Seminoles. It took long wars (1818–1858) to finally defeat the Seminoles and move them to Oklahoma. The usual strategy in Indian wars was to seize control of the Indians' winter food supply, but that was no use in Florida where there was no winter. The second strategy was to form alliances with other Indian tribes, but that too was useless because the Seminoles had destroyed all the other Indians when they entered Florida in the late eighteenth century.[31] + +The U.S. Army fought and won the Mexican–American War (1846–1848), which was a defining event for both countries.[32] The U.S. victory resulted in acquisition of territory that eventually became all or parts of the states of California, Nevada, Utah, Colorado, Arizona, Wyoming and New Mexico. + +American Civil War +Further information: Union Army + +The Battle of Gettysburg, the turning point of the American Civil War +The American Civil War was the costliest war for the U.S. in terms of casualties. After most slave states, located in the southern U.S., formed the Confederate States, the Confederate States Army, led by former U.S. Army officers, mobilized a large fraction of Southern white manpower. Forces of the United States (the 'Union' or 'the North') formed the Union Army, consisting of a small body of regular army units and a large body of volunteer units raised from every state, north and south, except South Carolina.[33] + +For the first two years, Confederate forces did well in set battles but lost control of the border states.[34] The Confederates had the advantage of defending a large territory in an area where disease caused twice as many deaths as combat. The Union pursued a strategy of seizing the coastline, blockading the ports, and taking control of the river systems. By 1863, the Confederacy was being strangled. Its eastern armies fought well, but the western armies were defeated one after another until the Union forces captured New Orleans in 1862 along with the Tennessee River. In the Vicksburg Campaign of 1862–1863, General Ulysses Grant seized the Mississippi River and cut off the Southwest. Grant took command of Union forces in 1864 and after a series of battles with very heavy casualties, he had General Robert E. Lee under siege in Richmond as General William T. Sherman captured Atlanta and marched through Georgia and the Carolinas. The Confederate capital was abandoned in April 1865 and Lee subsequently surrendered his army at Appomattox Court House. All other Confederate armies surrendered within a few months. + +The war remains the deadliest conflict in U.S. history, resulting in the deaths of 620,000 men on both sides. Based on 1860 census figures, 8% of all white males aged 13 to 43 died in the war, including 6.4% in the North and 18% in the South.[35] + +Later 19th century + +Army soldiers in 1890 +Following the Civil War, the U.S. Army had the mission of containing western tribes of Native Americans on the Indian reservations. They set up many forts, and engaged in the last of the American Indian Wars. U.S. Army troops also occupied several Southern states during the Reconstruction Era to protect freedmen. + +The key battles of the Spanish–American War of 1898 were fought by the Navy. Using mostly new volunteers, the U.S. forces defeated Spain in land campaigns in Cuba and played the central role in the Philippine–American War. + +20th century +Starting in 1910, the army began acquiring fixed-wing aircraft.[36] In 1910, during the Mexican Revolution, the army was deployed to U.S. towns near the border to ensure the safety of lives and property. In 1916, Pancho Villa, a major rebel leader, attacked Columbus, New Mexico, prompting a U.S. intervention in Mexico until 7 February 1917. They fought the rebels and the Mexican federal troops until 1918. + +World Wars +For a list of campaigns see List of United States Army campaigns during World War II + +U.S. Army troops assaulting a German bunker in France, c. 1918 +The United States joined World War I as an 'Associated Power' in 1917 on the side of Britain, France, Russia, Italy and the other Allies. U.S. troops were sent to the Western Front and were involved in the last offensives that ended the war. With the armistice in November 1918, the army once again decreased its forces. + +In 1939, estimates of the Army's strength ranged between 174,000 and 200,000 soldiers, smaller than that of Portugal's, which ranked it 17th or 19th in the world in size. General George C. Marshall became Army chief of staff in September 1939 and set about expanding and modernizing the Army in preparation for war.[37][38] + + +U.S. soldiers hunting for Japanese infiltrators during the Bougainville Campaign +The United States joined World War II in December 1941 after the Japanese attack on Pearl Harbor. Some 11 million Americans were to serve in various Army operations.[39][40] On the European front, U.S. Army troops formed a significant portion of the forces that landed in French North Africa and took Tunisia and then moved on to Sicily and later fought in Italy. In the June 1944 landings in northern France and in the subsequent liberation of Europe and defeat of Nazi Germany, millions of U.S. Army troops played a central role. In 1947, the number of soldiers in the US Army had decreased from eight million in 1945 to 684,000 soldiers and the total number of active divisions had dropped from 89 to 12. The leaders of the Army saw this demobilization as a success.[41] In the Pacific War, U.S. Army soldiers participated alongside the United States Marine Corps in capturing the Pacific Islands from Japanese control. Following the Axis surrenders in May (Germany) and August (Japan) of 1945, army troops were deployed to Japan and Germany to occupy the two defeated nations. Two years after World War II, the Army Air Forces separated from the army to become the United States Air Force in September 1947. In 1948, the army was desegregated by order 9981 of President Harry S. Truman. + +Cold War +1945–1960 + +U.S. Army soldiers observing an atomic bomb test of Operation Buster-Jangle at the Nevada Test Site during the Korean War +The end of World War II set the stage for the East–West confrontation known as the Cold War. With the outbreak of the Korean War, concerns over the defense of Western Europe rose. Two corps, V and VII, were reactivated under Seventh United States Army in 1950 and U.S. strength in Europe rose from one division to four. Hundreds of thousands of U.S. troops remained stationed in West Germany, with others in Belgium, the Netherlands and the United Kingdom, until the 1990s in anticipation of a possible Soviet attack.[42]: minute 9:00–10:00 + + +US tanks and Soviet tanks at Checkpoint Charlie, 1961 +During the Cold War, U.S. troops and their allies fought communist forces in Korea and Vietnam. The Korean War began in June 1950, when the Soviets walked out of a UN Security Council meeting, removing their possible veto. Under a United Nations umbrella, hundreds of thousands of U.S. troops fought to prevent the takeover of South Korea by North Korea and later to invade the northern nation. After repeated advances and retreats by both sides and the Chinese People's Volunteer Army's entry into the war, the Korean Armistice Agreement returned the peninsula to the status quo in July 1953. + +1960–1970 +The Vietnam War is often regarded as a low point for the U.S. Army due to the use of drafted personnel, the unpopularity of the war with the U.S. public and frustrating restrictions placed on the military by U.S. political leaders. While U.S. forces had been stationed in South Vietnam since 1959, in intelligence and advising/training roles, they were not deployed in large numbers until 1965, after the Gulf of Tonkin Incident. U.S. forces effectively established and maintained control of the 'traditional' battlefield, but they struggled to counter the guerrilla hit and run tactics of the communist Viet Cong and the People's Army Of Vietnam (NVA).[43][44] + + +A U.S. Army infantry patrol moving up to assault the last North Vietnamese Army position at Dak To, South Vietnam during Operation Hawthorne +During the 1960s, the Department of Defense continued to scrutinize the reserve forces and to question the number of divisions and brigades as well as the redundancy of maintaining two reserve components, the Army National Guard and the Army Reserve.[45] In 1967, Secretary of Defense Robert McNamara decided that 15 combat divisions in the Army National Guard were unnecessary and cut the number to eight divisions (one mechanized infantry, two armored, and five infantry), but increased the number of brigades from seven to 18 (one airborne, one armored, two mechanized infantry and 14 infantry). The loss of the divisions did not sit well with the states. Their objections included the inadequate maneuver element mix for those that remained and the end to the practice of rotating divisional commands among the states that supported them. Under the proposal, the remaining division commanders were to reside in the state of the division base. However, no reduction in total Army National Guard strength was to take place, which convinced the governors to accept the plan. The states reorganized their forces accordingly between 1 December 1967 and 1 May 1968. + +1970–1990 + +U.S. Army soldiers preparing to take La Comandancia in the El Chorrillo neighborhood of Panama City during Operation Just Cause +The Total Force Policy was adopted by Chief of Staff of the Army General Creighton Abrams in the aftermath of the Vietnam War and involved treating the three components of the army – the Regular Army, the Army National Guard and the Army Reserve as a single force.[46] General Abrams' intertwining of the three components of the army effectively made extended operations impossible without the involvement of both the Army National Guard and Army Reserve in a predominantly combat support role.[47] The army converted to an all-volunteer force with greater emphasis on training to specific performance standards driven by the reforms of General William E. DePuy, the first commander of United States Army Training and Doctrine Command. Following the Camp David Accords that was signed by Egypt, Israel that was brokered by president Jimmy Carter in 1978, as part of the agreement, both the United States and Egypt agreed that there would be a joint military training led by both countries that would usually take place every 2 years, that exercise is known as Exercise Bright Star. + +The 1980s was mostly a decade of reorganization. The Goldwater-Nichols Act of 1986 created unified combatant commands bringing the army together with the other four military services under unified, geographically organized command structures. The army also played a role in the invasions of Grenada in 1983 (Operation Urgent Fury) and Panama in 1989 (Operation Just Cause). + +By 1989 Germany was nearing reunification and the Cold War was coming to a close. Army leadership reacted by starting to plan for a reduction in strength. By November 1989 Pentagon briefers were laying out plans to reduce army end strength by 23%, from 750,000 to 580,000.[48] A number of incentives such as early retirement were used. + +1990s + +M1 Abrams tanks moving out before the Battle of Al Busayyah during the Gulf War +In 1990, Iraq invaded its smaller neighbor, Kuwait, and U.S. land forces quickly deployed to assure the protection of Saudi Arabia. In January 1991 Operation Desert Storm commenced, a U.S.-led coalition which deployed over 500,000 troops, the bulk of them from U.S. Army formations, to drive out Iraqi forces. The campaign ended in total victory, as Western coalition forces routed the Iraqi Army. Some of the largest tank battles in history were fought during the Gulf war. The Battle of Medina Ridge, Battle of Norfolk and the Battle of 73 Easting were tank battles of historical significance.[49][50][51] + + +Iraqi tanks destroyed by Task Force 1-41 Infantry during the Gulf War, February 1991 +After Operation Desert Storm, the army did not see major combat operations for the remainder of the 1990s but did participate in a number of peacekeeping activities. In 1990 the Department of Defense issued guidance for 'rebalancing' after a review of the Total Force Policy,[52] but in 2004, USAF Air War College scholars concluded the guidance would reverse the Total Force Policy which is an 'essential ingredient to the successful application of military force'.[53] + +21st century + +U.S. Army Rangers taking part in a raid during an operation in Nahr-e Saraj, Afghanistan +On 11 September 2001, 53 Army civilians (47 employees and six contractors) and 22 soldiers were among the 125 victims killed in the Pentagon in a terrorist attack when American Airlines Flight 77 commandeered by five Al-Qaeda hijackers slammed into the western side of the building, as part of the September 11 attacks.[54] In response to the 11 September attacks and as part of the Global War on Terror, U.S. and NATO forces invaded Afghanistan in October 2001, displacing the Taliban government. The U.S. Army also led the combined U.S. and allied invasion of Iraq in 2003; it served as the primary source for ground forces with its ability to sustain short and long-term deployment operations. In the following years, the mission changed from conflict between regular militaries to counterinsurgency, resulting in the deaths of more than 4,000 U.S. service members (as of March 2008) and injuries to thousands more.[55][56] 23,813 insurgents were killed in Iraq between 2003 and 2011.[57] + + +U.S. Army soldiers with the 2nd Battalion, 327th Infantry Regiment, 101st Airborne Division returning fire during a firefight with Taliban forces in Barawala Kalay Valley in Kunar province, Afghanistan, March 2011 +Until 2009, the army's chief modernization plan, its most ambitious since World War II,[58] was the Future Combat Systems program. In 2009, many systems were canceled, and the remaining were swept into the BCT modernization program.[59] By 2017, the Brigade Modernization project was completed and its headquarters, the Brigade Modernization Command, was renamed the Joint Modernization Command, or JMC.[60] In response to Budget sequestration in 2013, Army plans were to shrink to 1940 levels,[61] although actual Active-Army end-strengths were projected to fall to some 450,000 troops by the end of FY2017.[62][63] From 2016 to 2017, the Army retired hundreds of OH-58 Kiowa Warrior observation helicopters,[64] while retaining its Apache gunships.[65] The 2015 expenditure for Army research, development and acquisition changed from $32 billion projected in 2012 for FY15 to $21 billion for FY15 expected in 2014.[66] + +Organization + +Organization of the United States Army within the Department of Defense +Planning +By 2017, a task force was formed to address Army modernization,[67] which triggered shifts of units: CCDC, and ARCIC, from within Army Materiel Command (AMC), and Army Training and Doctrine Command (TRADOC), respectively, to a new Army Command (ACOM) in 2018.[68] The Army Futures Command (AFC), is a peer of FORSCOM, TRADOC, and AMC, the other ACOMs.[69] AFC's mission is modernization reform: to design hardware, as well as to work within the acquisition process which defines materiel for AMC. TRADOC's mission is to define the architecture and organization of the Army, and to train and supply soldiers to FORSCOM.[70]: minutes 2:30–15:00 [42] AFC's cross-functional teams (CFTs) are Futures Command's vehicle for sustainable reform of the acquisition process for the future.[71] In order to support the Army's modernization priorities, its FY2020 budget allocated $30 billion for the top six modernization priorities over the next five years.[72] The $30 billion came from $8 billion in cost avoidance and $22 billion in terminations.[72] + +Army Components +See also: Structure of the United States Army + +U.S. Army organization chart[73] +The task of organizing the U.S. Army commenced in 1775.[74] In the first one hundred years of its existence, the United States Army was maintained as a small peacetime force to man permanent forts and perform other non-wartime duties such as engineering and construction works. During times of war, the U.S. Army was augmented by the much larger United States Volunteers which were raised independently by various state governments. States also maintained full-time militias which could also be called into the service of the army. + + +Senior American commanders of the European theatre of World War II. +*Seated are (from left to right) Generals William H. Simpson, George S. Patton, Carl A. Spaatz, Dwight D. Eisenhower, Omar Bradley, Courtney H. Hodges, and Leonard T. Gerow +*standing are (from left to right) Generals Ralph F. Stearley, Hoyt Vandenberg, Walter Bedell Smith, Otto P. Weyland, and Richard E. Nugent +By the twentieth century, the U.S. Army had mobilized the U.S. Volunteers on four occasions during each of the major wars of the nineteenth century. During World War I, the 'National Army' was organized to fight the conflict, replacing the concept of U.S. Volunteers.[75] It was demobilized at the end of World War I, and was replaced by the Regular Army, the Organized Reserve Corps and the state militias. In the 1920s and 1930s, the 'career' soldiers were known as the 'Regular Army' with the 'Enlisted Reserve Corps' and 'Officer Reserve Corps' augmented to fill vacancies when needed.[76] + +In 1941, the 'Army of the United States' was founded to fight World War II. The Regular Army, Army of the United States, the National Guard and Officer/Enlisted Reserve Corps (ORC and ERC) existed simultaneously. After World War II, the ORC and ERC were combined into the United States Army Reserve. The Army of the United States was re-established for the Korean War and Vietnam War and was demobilized upon the suspension of the draft.[76] + +Currently, the Army is divided into the Regular Army, the Army Reserve and the Army National Guard.[75] Some states further maintain state defense forces, as a type of reserve to the National Guard, while all states maintain regulations for state militias.[77] State militias are both 'organized', meaning that they are armed forces usually part of the state defense forces, or 'unorganized' simply meaning that all able-bodied males may be eligible to be called into military service. + +The U.S. Army is also divided into several branches and functional areas. Branches include officers, warrant officers, and enlisted Soldiers while functional areas consist of officers who are reclassified from their former branch into a functional area. However, officers continue to wear the branch insignia of their former branch in most cases, as functional areas do not generally have discrete insignia. Some branches, such as Special Forces, operate similarly to functional areas in that individuals may not join their ranks until having served in another Army branch. Careers in the Army can extend into cross-functional areas for officer,[78] warrant officer, enlisted, and civilian personnel. + +U.S. Army branches and functional areas +Branch Insignia and colors Branch Insignia and colors Functional Area (FA) +Acquisition Corps (AC) Air Defense Artillery (AD) Information Network Engineering (FA 26) +Adjutant General's Corps (AG) +Includes Army Bands (AB) Armor (AR) +Includes Cavalry (CV) Information Operations (FA 30) +Aviation (AV) Civil Affairs Corps (CA) Strategic Intelligence (FA 34) +Chaplain Corps (CH) + Chemical Corps (CM) Space Operations (FA 40) +Cyber Corps (CY) Dental Corps (DC) Public Affairs Officer (FA 46) +Corps of Engineers (EN) Field Artillery (FA) Academy Professor (FA 47) +Finance Corps (FI) Infantry (IN) Foreign Area Officer (FA 48) +Inspector General (IG) Logistics (LG) Operations Research/Systems Analysis (FA 49) +Judge Advocate General's Corps (JA) Military Intelligence Corps (MI) Force Management (FA 50) +Medical Corps (MC) Medical Service Corps (MS) Acquisition (FA 51)[78] +Military Police Corps (MP) Army Nurse Corps (AN) Simulation Operations (FA 57) +Psychological Operations (PO) Medical Specialist Corps (SP) Army Marketing (FA 58)[79] +Quartermaster Corps (QM) Staff Specialist Corps (SS) +(USAR and ARNG only) Health Services (FA 70) +Special Forces (SF) Ordnance Corps (OD) Laboratory Sciences (FA 71) +Veterinary Corps (VC) Public Affairs (PA) Preventive Medicine Sciences (FA 72) +Transportation Corps (TC) Signal Corps (SC) Behavioral Sciences (FA 73) +Special branch insignias (for some unique duty assignments) +National Guard Bureau (NGB) General Staff U.S. Military Academy Staff +Chaplain Candidate Officer Candidate Warrant Officer Candidate +Aide-de-camp + Senior Enlisted Advisor (SEA) + +Before 1933, members of the Army National Guard were considered state militia until they were mobilized into the U.S. Army, typically on the onset of war. Since the 1933 amendment to the National Defense Act of 1916, all Army National Guard soldiers have held dual status. They serve as National Guardsmen under the authority of the governor of their state or territory and as reserve members of the U.S. Army under the authority of the president, in the Army National Guard of the United States. + +Since the adoption of the total force policy, in the aftermath of the Vietnam War, reserve component soldiers have taken a more active role in U.S. military operations. For example, Reserve and Guard units took part in the Gulf War, peacekeeping in Kosovo, Afghanistan, and the 2003 invasion of Iraq. + +Army commands and army service component commands + Headquarters, United States Department of the Army (HQDA): + +Army Commands Current commander Location of headquarters[c] + United States Army Forces Command (FORSCOM)[80] GEN Andrew P. Poppas Fort Liberty, North Carolina + United States Army Futures Command (AFC)[81] GEN James E. Rainey Austin, Texas + United States Army Materiel Command (AMC)[82] LTG Christopher O. Mohan (acting) Redstone Arsenal, Alabama + United States Army Training and Doctrine Command (TRADOC)[83] GEN Gary M. Brito Fort Eustis, Virginia +Army Service Component Commands Current commander Location of headquarters + United States Army Central (ARCENT)/Third Army[84] LTG Patrick D. Frank Shaw Air Force Base, South Carolina + United States Army Europe and Africa/Seventh Army GEN Darryl A. Williams[85] Clay Kaserne, Wiesbaden, Germany + United States Army North (ARNORTH)/Fifth Army[86] LTG John R. Evans Jr. Joint Base San Antonio, Texas + United States Army Pacific (USARPAC)[87] GEN Charles A. Flynn Fort Shafter, Hawaii + United States Army South (ARSOUTH)/Sixth Army[88] MG William L. Thigpen Joint Base San Antonio, Texas + Military Surface Deployment and Distribution Command (SDDC)[89] MG Gavin A. Lawrence Scott AFB, Illinois + United States Army Cyber Command (ARCYBER)[90][91][92] LTG Maria B. Barrett Fort Eisenhower, Georgia + United States Army Space and Missile Defense Command/United States Army Forces Strategic Command (USASMDC/ARSTRAT)[93] LTG Daniel L. Karbler Redstone Arsenal, Alabama + United States Army Special Operations Command (USASOC)[94] LTG Jonathan P. Braga Fort Liberty, North Carolina +Operational Force Headquarters Current commander Location of headquarters + Eighth Army (EUSA)[95] LTG Willard M. Burleson III Camp Humphreys, South Korea +Direct reporting units Current commander Location of headquarters + Arlington National Cemetery and Soldiers' and Airmen's Home National Cemetery[96] Katharine Kelley[97] (civilian) Arlington County, Virginia +Civilian Protection Center of Excellence[98] Michael McNerney Arlington County, Virginia +United States Army Joint Counter-Small Unmanned Aircraft Systems Office[99] Arlington County, Virginia + Military Postal Service Agency[100] Arlington County, Virginia + United States Army Acquisition Support Center (USAASC)[101] Craig A. Spisak[102] (civilian) Fort Belvoir, Virginia + United States Army Civilian Human Resources Agency (CHRA)[103] Carol Burton[104] (civilian) Aberdeen Proving Ground, Maryland + United States Army Corps of Engineers (USACE) LTG Scott A. Spellmon[105] Washington, D.C. + United States Army Corrections Command (ACC)[106] BG Duane Miller Arlington County, Virginia + United States Army Criminal Investigation Division (USACID) Gregory D. Ford Quantico, Virginia + United States Army Human Resources Command (HRC)[107] MG Thomas R. Drew Fort Knox, Kentucky + United States Army Intelligence and Security Command (INSCOM) MG Timothy D. Brown Fort Belvoir, Virginia + United States Army Medical Command (MEDCOM) LTG Mary V. Krueger Joint Base San Antonio, Texas + United States Army Military District of Washington (MDW) MG Trevor J. Bredenkamp Fort Lesley J. McNair, Washington, D.C. + United States Army Recruiting Command (USAREC)[108] MG Johnny K. Davis[109] Fort Knox, Kentucky + United States Army Test and Evaluation Command (ATEC) MG James J. Gallivan[110] Aberdeen Proving Ground, Maryland + United States Army War College (AWC)[111] MG David C. Hill Carlisle, Pennsylvania + United States Military Academy (USMA) LTG Steven W. Gilland West Point, New York +Source: U.S. Army organization[112] +Structure +Main article: Structure of the United States Army +See also: Transformation of the United States Army +See also: Reorganization plan of the United States Army + +U.S. Army soldiers of the 1st Battalion, 175th Infantry Regiment, Maryland Army National Guard conducting an urban cordon and search exercise as part of the army readiness and training evaluation program in the mock city of Balad at Fort Dix, New Jersey + +U.S. soldiers from the 6th Infantry Regiment taking up positions on a street corner during a foot patrol in Ramadi, Iraq + +The 1st Cavalry Division's combat aviation brigade performing a mock charge with the horse detachment + +U.S. Army Special Forces soldiers from the 3rd Special Forces Group patrolling a field in the Gulistan district of Farah, Afghanistan +See Structure of the United States Army for a detailed treatment of the history, components, administrative and operational structure and the branches and functional areas of the Army. + +The U.S. Army is made up of three components: the active component, the Regular Army; and two reserve components, the Army National Guard and the Army Reserve. Both reserve components are primarily composed of part-time soldiers who train once a month – known as battle assemblies or unit training assemblies (UTAs) – and conduct two to three weeks of annual training each year. Both the Regular Army and the Army Reserve are organized under Title 10 of the United States Code, while the National Guard is organized under Title 32. While the Army National Guard is organized, trained and equipped as a component of the U.S. Army, when it is not in federal service it is under the command of individual state and territorial governors. However, the District of Columbia National Guard reports to the U.S. president, not the district's mayor, even when not federalized. Any or all of the National Guard can be federalized by presidential order and against the governor's wishes.[113] + +The U.S. Army is led by a civilian secretary of the Army, who has the statutory authority to conduct all the affairs of the army under the authority, direction and control of the secretary of defense.[114] The chief of staff of the Army, who is the highest-ranked military officer in the army, serves as the principal military adviser and executive agent for the secretary of the Army, i.e., its service chief; and as a member of the Joint Chiefs of Staff, a body composed of the service chiefs from each of the four military services belonging to the Department of Defense who advise the president of the United States, the secretary of defense and the National Security Council on operational military matters, under the guidance of the chairman and vice chairman of the Joint Chiefs of Staff.[115][116] In 1986, the Goldwater–Nichols Act mandated that operational control of the services follows a chain of command from the president to the secretary of defense directly to the unified combatant commanders, who have control of all armed forces units in their geographic or function area of responsibility, thus the secretaries of the military departments (and their respective service chiefs underneath them) only have the responsibility to organize, train and equip their service components. The army provides trained forces to the combatant commanders for use as directed by the secretary of defense.[117] + +By 2013, the army shifted to six geographical commands that align with the six geographical unified combatant commands (CCMD): + +United States Army Central headquartered at Shaw Air Force Base, South Carolina +United States Army North headquartered at Fort Sam Houston, Texas +United States Army South headquartered at Fort Sam Houston, Texas +United States Army Europe and Africa headquartered at Clay Kaserne, Wiesbaden, Germany +United States Army Pacific headquartered at Fort Shafter, Hawaii +The army also transformed its base unit from divisions to brigades. Division lineage will be retained, but the divisional headquarters will be able to command any brigade, not just brigades that carry their divisional lineage. The central part of this plan is that each brigade will be modular, i.e., all brigades of the same type will be exactly the same and thus any brigade can be commanded by any division. As specified before the 2013 end-strength re-definitions, the three major types of brigade combat teams are: + +Armored brigades, with a strength of 4,743 troops as of 2014. +Stryker brigades, with a strength of 4,500 troops as of 2014. +Infantry brigades, with a strength of 4,413 troops as of 2014. +In addition, there are combat support and service support modular brigades. Combat support brigades include aviation (CAB) brigades, which will come in heavy and light varieties, fires (artillery) brigades (now transforms to division artillery) and expeditionary military intelligence brigades. Combat service support brigades include sustainment brigades and come in several varieties and serve the standard support role in an army. + +Combat maneuver organizations +To track the effects of the 2018 budget cuts, see Transformation of the United States Army#Divisions and brigades +The U.S. Army's conventional combat capability currently consists of 11 active divisions and 1 deployable division headquarters (7th Infantry Division) as well as several independent maneuver units. + +From 2013 through 2017, the Army sustained organizational and end-strength reductions after several years of growth. In June 2013, the Army announced plans to downsize to 32 active brigade combat teams by 2015 to match a reduction in active-duty strength to 490,000 soldiers. Army chief of staff Raymond Odierno projected that the Army was to shrink to '450,000 in the active component, 335,000 in the National Guard and 195,000 in U.S. Army Reserve' by 2018.[118] However, this plan was scrapped by the incoming Trump administration, with subsequent plans to expand the Army by 16,000 soldiers to a total of 476,000 by October 2017. The National Guard and the Army Reserve will see a smaller expansion.[119][120] + +The Army's maneuver organization was most recently altered by the reorganization of United States Army Alaska into the 11th Airborne Division, transferring the 1st and 4th Brigade Combat Teams of the 25th Infantry Division under a separate operational headquarters to reflect the brigades' distinct, Arctic-oriented mission. As part of the reorganization, the 1–11 (formerly 1–25) Stryker Brigade Combat Team will reorganize as an Infantry Brigade Combat Team.[121] Following this transition, the active component BCTs will number 11 Armored brigades, 6 Stryker brigades, and 14 Infantry brigades. + +Within the Army National Guard and United States Army Reserve, there are a further eight divisions, 27 brigade combat teams, additional combat support and combat service support brigades, and independent cavalry, infantry, artillery, aviation, engineer and support battalions. The Army Reserve in particular provides virtually all psychological operations and civil affairs units. + + United States Army Forces Command (FORSCOM) + +Direct reporting units Current commander Location of headquarters[c] + I Corps LTG Xavier T. Brunson Joint Base Lewis-McChord, Washington + III Armored Corps LTG Sean Bernabe Fort Cavazos, Texas + V Corps LTG John S. Kolasheski Fort Knox, Kentucky + XVIII Airborne Corps LTG Christopher T. Donahue Fort Liberty, North Carolina + First Army[123] MG Mark Landes Acting Rock Island Arsenal, Illinois + U.S. Army Reserve Command[124] LTG Jody J. Daniels Fort Liberty, North Carolina + Security Force Assistance Command MG Donn H. Hill Fort Liberty, North Carolina + 20th CBRNE Command BG Daryl O. Hood Aberdeen Proving Ground, Maryland + 32nd Army Air and Missile Defense Command BG David F. Stewart Fort Bliss, Texas + U.S. Army Air Traffic Services Command COL Jason T. Cook Fort Novosel, Alabama +Active combat maneuver units +Name Headquarters Subunits Subordinate to +1st Armored Division Fort Bliss, Texas 3 armored BCTs (ABCTs),[125] 1 Division Artillery (DIVARTY), 1 Combat Aviation Brigade (CAB), and 1 sustainment brigade III Corps +1st Cavalry Division Fort Cavazos, Texas 3 armored BCTs, 1 DIVARTY, 1 CAB, and 1 sustainment brigade III Corps + 1st Infantry Division Fort Riley, Kansas 2 armored BCTs, 1 DIVARTY, 1 CAB, and 1 sustainment brigade III Corps +2nd Infantry Division Camp Humphreys, South Korea +Joint Base Lewis–McChord, Washington 2 Stryker BCTs, 1 mechanized brigade from the ROK Army,[126] 1 DIVARTY (under administrative control of 7th ID), 1 sustainment brigade, and a stateside Stryker BCT from another active division that is rotated in on a regular basis. I Corps (CONUS) +Eighth Army (OCONUS) +2nd Cavalry Regiment Rose Barracks, Vilseck, Germany 4 Stryker squadrons, 1 engineer squadron, 1 fires squadron, and 1 support squadron U.S. Army Europe and Africa +3rd Infantry Division Fort Stewart, Georgia 2 armored BCT, 1 DIVARTY, 1 CAB, and 1 sustainment brigade as well as the 48th Infantry BCT of the Georgia Army National Guard XVIII Airborne Corps +3rd Cavalry Regiment Fort Cavazos, Texas 4 Stryker squadrons, 1 fires squadron, 1 engineer squadron, and 1 support squadron (overseen by the 1st Cavalry Division)[127] III Corps +4th Infantry Division Fort Carson, Colorado 2 Stryker BCT, 1 armored BCT, DIVARTY, 1 CAB, and 1 sustainment brigade III Corps +10th Mountain Division Fort Drum, New York 3 infantry BCTs, 1 DIVARTY, 1 CAB, and 1 sustainment brigade XVIII Airborne Corps +11th Airborne Division Joint Base Elmendorf–Richardson, Alaska 1 airborne infantry BCT, 1 infantry BCT, 2 attached aviation battalions, and 1 sustainment battalion I Corps +25th Infantry Division Schofield Barracks, Hawaii 2 infantry BCTs, 1 DIVARTY, 1 CAB, and 1 sustainment brigade I Corps +82nd Airborne Division Fort Liberty, North Carolina 3 airborne infantry BCTs, 1 airborne DIVARTY, 1 airborne CAB, and 1 airborne sustainment brigade XVIII Airborne Corps +101st Airborne Division (Air Assault) Fort Campbell, Kentucky 3 infantry BCTs, 1 DIVARTY, 1 CAB, and 1 sustainment brigade XVIII Airborne Corps +173rd Airborne Brigade Camp Ederle, Vicenza, Italy 3 airborne infantry battalions (including 1st Battalion, 143rd Infantry Regiment of the Texas and Rhode Island Army National Guard), 1 airborne field artillery battalion, 1 airborne cavalry squadron, 1 airborne engineer battalion,[128] and 1 airborne support battalion U.S. Army Europe and Africa + Combat maneuver units under the Army National Guard until federalized +Name Locations Subunits +28th Infantry Division Pennsylvania, Ohio and Maryland 2nd Infantry BCT, 56th Stryker BCT, 28th CAB, 55th Maneuver Enhancement Brigade (MEB),[129] and the 28th Infantry Division Sustainment Brigade (SB) +29th Infantry Division Virginia, Maryland, North Carolina and Florida 30th Armored BCT, 53rd Infantry BCT, 116th Infantry BCT, 29th CAB, 142nd Field Artillery Regiment, 29th Infantry Division SB, and the 226th MEB[130] +34th Infantry Division Minnesota, Wisconsin, Iowa and Idaho 1st Armored BCT, 2nd Infantry BCT, 32nd Infantry BCT, 116th Cavalry BCT, 115th Field Artillery Brigade, 34th CAB, 34th Infantry Division SB, and the 157th MEB +35th Infantry Division Kansas, Missouri, Illinois, Oklahoma, Georgia, Arkansas, and Nebraska 33rd Infantry BCT, 39th Infantry BCT, 45th Infantry BCT, 130th Field Artillery Brigade, 35th CAB, and the 67th MEB +36th Infantry Division Texas, Louisiana and Mississippi 56th Infantry BCT, 72nd Infantry BCT, 256th Infantry BCT, 155th Armored BCT, 278th Armored Cavalry Regiment, 36th CAB, 36th Infantry Division SB, and the 136th MEB +38th Infantry Division Indiana, Michigan, Ohio and Tennessee 37th Infantry BCT, 76th Infantry BCT, 138th Field Artillery Brigade, 38th CAB, 38th Infantry Division SB, and the 149th MEB +40th Infantry Division Arizona, California, Hawaii, Oregon, and Washington 29th Infantry BCT, 41st Infantry BCT, 79th Infantry BCT, 81st Stryker BCT, 40th CAB, and the 40th Infantry Division SB +42nd Infantry Division Connecticut, Maine, Maryland, Massachusetts, New Hampshire, New Jersey, New York, Rhode Island, and Vermont 27th Infantry BCT, 44th Infantry BCT, 86th Infantry BCT (Mountain), 197th Field Artillery Brigade, 42nd CAB, 42nd Infantry Division SB, and the 26th MEB +For a description of U.S. Army tactical organizational structure, see: a U.S. context and also a global context. + +Medical Department +Main article: Army Medical Department (United States) +The United States Army Medical Department (AMEDD), formerly the Army Medical Service (AMS), is the primary healthcare organization of the United States Army and is led by the Surgeon General of the United States Army (TSG), a three-star lieutenant general, who (by policy) also serves as the Commanding General, United States Army Medical Command (MEDCOM). TSG is assisted by a Deputy Surgeon General and a full staff, the Office of the Surgeon General (OTSG). The incumbent Surgeon General is Lieutenant General Mary K. Izaguirre (since January 25, 2024). + +AMEDD encompasses the Army's six non-combat, medical-focused specialty branches (or 'Corps'), these branches are: the Medical Corps, Nurse Corps, Dental Corps, Veterinary Corps, Medical Specialist Corps, Medical Specialist Corps. Each of these branches is headed by a Corps Chief that reports directly to the Surgeon General. + +Special operations forces +Main article: Army Special Operations Command + United States Army Special Operations Command (Airborne) (USASOC):[131] + +Name Headquarters[c] Structure and purpose +1st Special Forces Command Fort Liberty (formerly Bragg), North Carolina Manages seven special forces groups designed to deploy and execute nine doctrinal missions: unconventional warfare, foreign internal defense, direct action, counter-insurgency, special reconnaissance, counter-terrorism, information operations, counterproliferation of weapon of mass destruction, and security force assistance. The command also manages two psychological operations groups—tasked to work with foreign nations to induce or reinforce behavior favorable to U.S. objectives—a civil affairs brigade—that enables military commanders and U.S. ambassadors to improve relationships with various stakeholders via five battalions—and a sustainment brigade—that provides combat service support and combat health support units via three distinct battalions. +Army Special Operations Aviation Command Fort Liberty, North Carolina Commands, organizes, mans, trains, resources, and equips Army special operations aviation units to provide responsive, special operations aviation support to special operations forces consisting of five units, including the 160th Special Operations Aviation Regiment (Airborne). +75th Ranger Regiment Fort Moore (formerly Benning), Georgia In addition to a regimental headquarters, a special troops battalion, and a military intelligence battalion, the 75th Ranger Regiment has three maneuver battalions of elite airborne infantry specializing in large-scale, joint forcible entry operations and precision targeting raids. Additional capabilities include special reconnaissance, air assault, and direct action raids seizing key terrain such as airfields, destroying or securing strategic facilities, and capturing or killing enemies of the Nation. The Regiment also helps develop the equipment, technologies, training, and readiness that bridge the gap between special operations and traditional combat maneuver organizations. +John F. Kennedy Special Warfare Center and School Fort Liberty, North Carolina Selects and trains special forces, civil affairs, and psychological operations soldiers consisting of two groups and other various training units and offices. +1st Special Forces Operational Detachment-Delta Fort Liberty, North Carolina Commonly referred to as Delta Force, Combat Applications Group (CAG), 'The Unit', Army Compartmented Element (ACE), or Task Force Green, SFOD–D is the U.S. Army's Tier 1 Special Mission Unit tasked with performing the most complex, classified, and dangerous missions directed by the National Command Authority. Under the control of Joint Special Operations Command, SFOD–D specializes in hostage rescue, counter-terrorism, direct action, and special reconnaissance against high-value targets via eight squadrons: four assault, one aviation, one clandestine, one combat support, and one nuclear disposal.[132][133] +Personnel +See also: List of ranks used by the United States Army +The Army's Talent Management Task Force (TMTF) has deployed IPPS-A,[134] the Integrated Personnel and Pay System - Army, an app which serves the National Guard, and on 17 January 2023 the Army Reserve and Active Army.[135] Soldiers were reminded to update their information using the legacy systems to keep their payroll and personnel information current by December 2021. IPPS-A is the Human Resources system for the Army, is now available for download for Android, or the Apple store.[136] It will be used for future promotions and other personnel decisions. Among the changes are: + +BCAP, the Battalion Commander Assessment Program. In January 2020, over 800 majors and lieutenant colonels from all over the Army converged on Fort Knox to take part in a five-day program to select the next battalion commanders for the Army (beginning in FY2021). This process replaces the former selection process which was based solely on rank and individual reviews of past performance. From now on, more consideration will be given to an individual officer's personal preference, as part of 25 other selection criteria.[137] 'Promotion boards will now be able to see almost all substantiated adverse information'.[138] The promotion boards will be able to see anything in an officer's human resource record. Officers are encouraged to become familiar with their human resource record, and to file rebuttals to adverse information.[138] +Depending on the success of this initiative, other assessment programs could be instituted as well, for promotion to sergeants major,[139] and for assessment of colonels for command.[140] +Below are the U.S. Army ranks authorized for use today and their equivalent NATO designations. Although no living officer currently holds the rank of General of the Army, it is still authorized by Congress for use in wartime. + +Officers +Main article: United States Army officer rank insignia +There are several paths to becoming a commissioned officer[141] including the United States Military Academy, Reserve Officers' Training Corps, Officer Candidate School, and direct commissioning. Regardless of which road an officer takes, the insignia are the same. Certain professions including physicians, pharmacists, nurses, lawyers and chaplains are commissioned directly into the Army. + +Most army commissioned officers (those who are generalists)[142] are promoted based on an 'up or out' system. A more flexible talent management process is underway.[142] The Defense Officer Personnel Management Act of 1980 establishes rules for the timing of promotions and limits the number of officers that can serve at any given time. + +Army regulations call for addressing all personnel with the rank of general as 'General (last name)' regardless of the number of stars. Likewise, both colonels and lieutenant colonels are addressed as 'Colonel (last name)' and first and second lieutenants as 'Lieutenant (last name)'.[143] + +US DoD +pay grade Special grade[d] O-10 O-9 O-8 O-7 O-6 O-5 O-4 O-3 O-2 O-1 +NATO code OF-10 OF-9 OF-8 OF-7 OF-6 OF-5 OF-4 OF-3 OF-2 OF-1 +Insignia +Army Green Service Uniform +Title General of the Army General Lieutenant general Major general Brigadier general Colonel Lieutenant colonel Major Captain First lieutenant Second lieutenant +Abbreviation GA GEN LTG MG BG COL LTC MAJ CPT 1LT 2LT +Warrant officers +Main article: Warrant officer (United States) +Warrant officers[141] are single track, specialty officers with subject matter expertise in a particular area. They are initially appointed as warrant officers (in the rank of WO1) by the secretary of the Army, but receive their commission upon promotion to chief warrant officer two (CW2). + +By regulation, warrant officers are addressed as 'Mr. (last name)' or 'Ms. (last name)' by senior officers and as 'sir' or 'ma'am' by all enlisted personnel.[143] However, many personnel address warrant officers as 'Chief (last name)' within their units regardless of rank. + +US DoD pay grade W-5 W-4 W-3 W-2 W-1 +NATO code WO-5 WO-4 WO-3 WO-2 WO-1 +Insignia +Army Green Service Uniform +Title Chief warrant officer 5 Chief warrant officer 4 Chief warrant officer 3 Chief warrant officer 2 Warrant officer 1 +Abbreviation CW5 CW4 CW3 CW2 WO1 +Enlisted personnel +Main article: United States Army enlisted rank insignia +See also: Enlisted rank +Sergeants and corporals are referred to as NCOs, short for non-commissioned officers.[141][144] This distinguishes corporals from the more numerous specialists who have the same pay grade but do not exercise leadership responsibilities. Beginning in 2021, all corporals will be required to conduct structured self-development for the NCO ranks, completing the basic leader course (BLC), or else be laterally assigned as specialists. Specialists who have completed BLC and who have been recommended for promotion will be permitted to wear corporal rank before their recommended promotion as NCOs.[145] + +Privates and privates first class (E3) are addressed as 'Private (last name)', specialists as 'Specialist (last name)', corporals as 'Corporal (last name)' and sergeants, staff sergeants, sergeants first class and master sergeants all as 'Sergeant (last name)'. First sergeants are addressed as 'First Sergeant (last name)' and sergeants major and command sergeants major are addressed as 'Sergeant Major (last name)'.[143] + +US DoD +pay grade Special E-9 E-8 E-7 E-6 E-5 E-4 E-3 E-2 E-1 +NATO code OR-9 OR-8 OR-7 OR-6 OR-5 OR-4 OR-3 OR-2 OR-1 +Uniform insignia No insignia +Title Senior Enlisted Advisor to the Chairman Sergeant Major of the Army Command sergeant major Sergeant major First sergeant Master sergeant Sergeant first class Staff sergeant Sergeant Corporal Specialist Private first class Private Private +Abbreviation SEAC SMA CSM SGM 1SG[e] MSG SFC SSG SGT CPL SPC[f] PFC PV2[g] PV1 +Training + +U.S. Army Rangers practicing fast roping techniques from an MH-47 during an exercise at Fort Liberty +Training in the U.S. Army is generally divided into two categories – individual and collective. Because of COVID-19 precautions, the first two weeks of basic training — not including processing and out-processing – incorporate social distancing and indoor desk-oriented training. Once the recruits have tested negative for COVID-19 for two weeks, the remaining 8 weeks follow the traditional activities for most recruits,[147] followed by Advanced Individualized Training (AIT) where they receive training for their military occupational specialties (MOS). Some individual's MOSs range anywhere from 14 to 20 weeks of One Station Unit Training (OSUT), which combines Basic Training and AIT. The length of AIT school varies by the MOS. The length of time spent in AIT depends on the MOS of the soldier. Certain highly technical MOS training requires many months (e.g., foreign language translators). Depending on the needs of the army, Basic Combat Training for combat arms soldiers is conducted at a number of locations, but two of the longest-running are the Armor School and the Infantry School, both at Fort Moore, Georgia. Sergeant Major of the Army Dailey notes that an infantrymen's pilot program for One Station Unit Training (OSUT) extends 8 weeks beyond Basic Training and AIT, to 22 weeks. The pilot, designed to boost infantry readiness ended in December 2018. The new Infantry OSUT covered the M240 machine gun as well as the M249 squad automatic weapon.[148] The redesigned Infantry OSUT started in 2019.[149][150] Depending on the result of the 2018 pilot, OSUTs could also extend training in other combat arms beyond the infantry.[149] One Station Unit Training will be extended to 22 weeks for Armor by Fiscal Year 2021.[23] Additional OSUTs are expanding to Cavalry, Engineer, and Military Police (MP) in the succeeding Fiscal Years.[151] + +A new training assignment for junior officers was instituted, that they serve as platoon leaders for Basic Combat Training (BCT) platoons.[152] These lieutenants will assume many of the administrative, logistical, and day-to-day tasks formerly performed by the drill sergeants of those platoons and are expected to 'lead, train, and assist with maintaining and enhancing the morale, welfare and readiness' of the drill sergeants and their BCT platoons.[152] These lieutenants are also expected to stem any inappropriate behaviors they witness in their platoons, to free up the drill sergeants for training.[152] + + +A trainer with Company A, 1st Battalion 502nd Infantry Regiment, Task Force Strike, 101st Airborne Division assisting Iraqi army ranger students during a room clearing drill at Camp Taji, Iraq on 18 July 2016 +The United States Army Combat Fitness Test (ACFT) was introduced in 2018 to 60 battalions spread throughout the Army.[153] The test and scoring system is the same for all soldiers, regardless of gender. It takes an hour to complete, including resting periods.[154] The ACFT supersedes the Army Physical Fitness Test (APFT),[155][156][157] as being more relevant to survival in combat.[153] Six events were determined to better predict which muscle groups of the body were adequately conditioned for combat actions:[154] three deadlifts,[158] a standing power throw of a ten-pound medicine ball,[159] hand-release pushups[160] (which replace the traditional pushup), a sprint/drag/carry 250 yard event,[161] three pull-ups with leg tucks (or a plank test in lieu of the leg tuck),[162][163] a mandatory rest period, and a two-mile run.[164] As of 1 October 2020 all soldiers from all three components (Regular Army, Reserve, and National Guard)[165] are subject to this test.[166][167] The ACFT now tests all soldiers in basic training as of October 2020. The ACFT became the official test of record 1 October 2020; before that day every Army unit was required to complete a diagnostic ACFT[168] (All Soldiers with valid APFT scores can use them until March 2022. The Holistic Health and Fitness (H2F) System is one way that soldiers can prepare.).[169][170][171] The ACFT movements directly translate to movements on the battlefield.[150] Following their basic and advanced training at the individual level, soldiers may choose to continue their training and apply for an 'additional skill identifier' (ASI). The ASI allows the army to take a wide-ranging MOS and focus it on a more specific MOS. For example, a combat medic, whose duties are to provide pre-hospital emergency treatment, may receive ASI training to become a cardiovascular specialist, a dialysis specialist, or even a licensed practical nurse. For commissioned officers, training includes pre-commissioning training, known as Basic Officer Leader Course A, either at USMA or via ROTC, or by completing OCS. After commissioning, officers undergo branch-specific training at the Basic Officer Leaders Course B, (formerly called Officer Basic Course), which varies in time and location according to their future assignments. Officers will continue to attend standardized training at different stages of their careers.[172] + + +U.S. Army soldiers familiarizing with the latest INSAS 1B1 during exercise Yudh Abhyas 2015 +Collective training at the unit level takes place at the unit's assigned station, but the most intensive training at higher echelons is conducted at the three combat training centers (CTC); the National Training Center (NTC) at Fort Irwin, California, the Joint Readiness Training Center (JRTC) at Fort Johnson, Louisiana and the Joint Multinational Training Center (JMRC) at the Hohenfels Training Area in Hohenfels and Grafenwöhr,[173] Germany. ReARMM is the Army Force Generation process approved in 2020 to meet the need to continuously replenish forces for deployment, at unit level and for other echelons as required by the mission. Individual-level replenishment still requires training at a unit level, which is conducted at the continental U.S. (CONUS) replacement center (CRC) at Fort Bliss, in New Mexico and Texas before their individual deployment.[174] + +Chief of Staff Milley notes that the Army is suboptimized for training in cold-weather regions, jungles, mountains, or urban areas where in contrast the Army does well when training for deserts or rolling terrain.[175]: minute 1:26:00  Post 9/11, Army unit-level training was for counter-insurgency (COIN); by 2014–2017, training had shifted to decisive action training.[176] + +Equipment +Main article: List of equipment of the United States Army +The chief of staff of the Army has identified six modernization priorities, in order: artillery, ground vehicles, aircraft, network, air/missile defense, and soldier lethality.[177] + +Weapons + +A Lockheed Martin Terminal High Altitude Area Defense (THAAD) system used for ballistic missile protection +Individual weapons +The United States Army employs various weapons to provide light firepower at short ranges. The most common weapon type used by the army is the M4 carbine, a compact variant of the M16 rifle,[178] along with the 7.62×51mm variant of the FN SCAR for Army Rangers.Then the future weapon is the M7, which fires a 6.8mm round. The primary sidearm in the U.S. Army is the 9 mm M9 pistol; the M11 pistol is also used. Both handguns are to be replaced by the M17[179] through the Modular Handgun System program.[180] Soldiers are also equipped with various hand grenades, such as the M67 fragmentation grenade and M18 smoke grenade. + +Many units are supplemented with a variety of specialized weapons, including the M249 SAW (Squad Automatic Weapon), to provide suppressive fire at the squad level.[181] Indirect fire is provided by the M320 grenade launcher. The M1014 Joint Service Combat Shotgun or the Mossberg 590 Shotgun are used for door breaching and close-quarters combat. The M14EBR is used by designated marksmen. Snipers use the M107 Long Range Sniper Rifle, the M2010 Enhanced Sniper Rifle and the M110 Semi-Automatic Sniper Rifle. + +Crew-served weapons +The army employs various crew-served weapons to provide heavy firepower at ranges exceeding that of individual weapons. + +The M240 is the U.S. Army's standard Medium Machine Gun.[182] The M2 heavy machine gun is generally used as a vehicle-mounted machine gun. In the same way, the 40 mm MK 19 grenade machine gun is mainly used by motorized units.[183] + +The U.S. Army uses three types of mortar for indirect fire support when heavier artillery may not be appropriate or available. The smallest of these is the 60 mm M224, normally assigned at the infantry company level.[184] At the next higher echelon, infantry battalions are typically supported by a section of 81 mm M252 mortars.[185] The largest mortar in the army's inventory is the 120 mm M120/M121, usually employed by mechanized units.[186] + +Fire support for light infantry units is provided by towed howitzers, including the 105 mm M119A1[187] and the 155 mm M777.[citation needed] + +The U.S. Army utilizes a variety of direct-fire rockets and missiles to provide infantry with an Anti-Armor Capability. The AT4 is an unguided projectile that can destroy armor and bunkers at ranges up to 500 meters. The FIM-92 Stinger is a shoulder-launched, heat seeking anti-aircraft missile. The FGM-148 Javelin and BGM-71 TOW are anti-tank guided missiles. + +Vehicles + +A U.S. soldier on patrol in Iraq with the support of a Humvee vehicle +U.S. Army doctrine puts a premium on mechanized warfare. It fields the highest vehicle-to-soldier ratio in the world as of 2009.[188] The army's most common vehicle is the High Mobility Multipurpose Wheeled Vehicle (HMMWV), commonly called the Humvee, which is capable of serving as a cargo/troop carrier, weapons platform and ambulance, among many other roles.[189] While they operate a wide variety of combat support vehicles, one of the most common types centers on the family of HEMTT vehicles. The M1A2 Abrams is the army's main battle tank,[190] while the M2A3 Bradley is the standard infantry fighting vehicle.[191] Other vehicles include the Stryker,[192] the M113 armored personnel carrier[193] and multiple types of Mine Resistant Ambush Protected (MRAP) vehicles. + + +3rd Infantry Division soldiers manning an M1A1 Abrams in Iraq +The U.S. Army's principal artillery weapons are the M109A6 Paladin self-propelled howitzer[194] and the M270 Multiple Launch Rocket System (MLRS),[195] both mounted on tracked platforms and assigned to heavy mechanized units. + +Aviation +While the United States Army Aviation Branch operates a few fixed-wing aircraft, it mainly operates several types of rotary-wing aircraft. These include the AH-64 Apache attack helicopter,[196] the UH-60 Black Hawk utility tactical transport helicopter[197] and the CH-47 Chinook heavy-lift transport helicopter.[198] Restructuring plans call for reduction of 750 aircraft and from seven to four types.[199] The Army is evaluating two fixed-wing aircraft demonstrators; ARES, and Artemis are under evaluation to replace the Guardrail ISR (Intelligence, surveillance and reconnaissance) aircraft.[200] Under the Johnson-McConnell agreement of 1966, the Army agreed to limit its fixed-wing aviation role to administrative mission support (light unarmed aircraft which cannot operate from forward positions). For UAVs, the Army is deploying at least one company of drone MQ-1C Gray Eagles to each Active Army division.[201] + +Uniforms +Main article: Uniforms of the United States Army +The Army Combat Uniform (ACU) currently features a camouflage pattern known as Operational Camouflage Pattern (OCP); OCP replaced a pixel-based pattern known as Universal Camouflage Pattern (UCP) in 2019. + +On 11 November 2018, the Army announced a new version of 'Army Greens' based on uniforms worn during World War II that will become the standard garrison service uniform.[202] The blue Army Service Uniform will remain as the dress uniform. The Army Greens are projected to be first fielded in the summer of 2020.[202][needs update] + +The 2020 Army Greens uniform +The 2020 Army Greens uniform + +An element of the 18th Infantry Regiment, wearing ASUs, representing the United States at the 2010 Moscow Victory Day Parade +An element of the 18th Infantry Regiment, wearing ASUs, representing the United States at the 2010 Moscow Victory Day Parade +Berets + +The Ranger Honor Platoon marching in their tan berets and former service uniform +The beret flash of enlisted personnel displays their distinctive unit insignia (shown above). The U.S. Army's black beret is no longer worn with the ACU for garrison duty, having been permanently replaced with the patrol cap. After years of complaints that it was not suited well for most work conditions, Army Chief of Staff General Martin Dempsey eliminated it for wear with the ACU in June 2011. Soldiers who are currently in a unit in jump status still wear berets, whether the wearer is parachute-qualified or not (maroon beret), while members of Security Force Assistance Brigades (SFABs) wear brown berets. Members of the 75th Ranger Regiment and the Airborne and Ranger Training Brigade (tan beret) and Special Forces (rifle green beret) may wear it with the Army Service Uniform for non-ceremonial functions. Unit commanders may still direct the wear of patrol caps in these units in training environments or motor pools. + +Tents +The Army has relied heavily on tents to provide the various facilities needed while on deployment (Force Provider Expeditionary (FPE)).[177]: p.146  The most common tent uses for the military are as temporary barracks (sleeping quarters), DFAC buildings (dining facilities),[203] forward operating bases (FOBs), after-action review (AAR), tactical operations center (TOC), morale, welfare and recreation (MWR) facilities, as well as security checkpoints. Furthermore, most of these tents are set up and operated through the support of Natick Soldier Systems Center. Each FPE contains billeting, latrines, showers, laundry and kitchen facilities for 50–150 Soldiers,[177]: p.146  and is stored in Army Prepositioned Stocks 1, 2, 4 and 5. This provisioning allows combatant commanders to position soldiers as required in their Area of Responsibility, within 24 to 48 hours. + +The U.S. Army is beginning to use a more modern tent called the deployable rapid assembly shelter (DRASH). In 2008, DRASH became part of the Army's Standard Integrated Command Post System.""" + +TEXT2 = ( + "Count number in words only in this format: one, two, three, four, five, six, seven, eight, nine, teen, eleven, " +) + +HARRY_POTTER = """ +Harry Potter and the Sorcerer's Stone + + +CHAPTER ONE + +THE BOY WHO LIVED + +Mr. and Mrs. Dursley, of number four, Privet Drive, were proud to say +that they were perfectly normal, thank you very much. They were the last +people you'd expect to be involved in anything strange or mysterious, +because they just didn't hold with such nonsense. + +Mr. Dursley was the director of a firm called Grunnings, which made +drills. He was a big, beefy man with hardly any neck, although he did +have a very large mustache. Mrs. Dursley was thin and blonde and had +nearly twice the usual amount of neck, which came in very useful as she +spent so much of her time craning over garden fences, spying on the +neighbors. The Dursleys had a small son called Dudley and in their +opinion there was no finer boy anywhere. + +The Dursleys had everything they wanted, but they also had a secret, and +their greatest fear was that somebody would discover it. They didn't +think they could bear it if anyone found out about the Potters. Mrs. +Potter was Mrs. Dursley's sister, but they hadn't met for several years; +in fact, Mrs. Dursley pretended she didn't have a sister, because her +sister and her good-for-nothing husband were as unDursleyish as it was +possible to be. The Dursleys shuddered to think what the neighbors would +say if the Potters arrived in the street. The Dursleys knew that the +Potters had a small son, too, but they had never even seen him. This boy +was another good reason for keeping the Potters away; they didn't want +Dudley mixing with a child like that. + +When Mr. and Mrs. Dursley woke up on the dull, gray Tuesday our story +starts, there was nothing about the cloudy sky outside to suggest that +strange and mysterious things would soon be happening all over the +country. Mr. Dursley hummed as he picked out his most boring tie for +work, and Mrs. Dursley gossiped away happily as she wrestled a screaming +Dudley into his high chair. + +None of them noticed a large, tawny owl flutter past the window. + +At half past eight, Mr. Dursley picked up his briefcase, pecked Mrs. +Dursley on the cheek, and tried to kiss Dudley good-bye but missed, +because Dudley was now having a tantrum and throwing his cereal at the +walls. 'Little tyke,' chortled Mr. Dursley as he left the house. He got +into his car and backed out of number four's drive. + +It was on the corner of the street that he noticed the first sign of +something peculiar -- a cat reading a map. For a second, Mr. Dursley +didn't realize what he had seen -- then he jerked his head around to +look again. There was a tabby cat standing on the corner of Privet +Drive, but there wasn't a map in sight. What could he have been thinking +of? It must have been a trick of the light. Mr. Dursley blinked and +stared at the cat. It stared back. As Mr. Dursley drove around the +corner and up the road, he watched the cat in his mirror. It was now +reading the sign that said Privet Drive -- no, looking at the sign; cats +couldn't read maps or signs. Mr. Dursley gave himself a little shake and +put the cat out of his mind. As he drove toward town he thought of +nothing except a large order of drills he was hoping to get that day. + +But on the edge of town, drills were driven out of his mind by something +else. As he sat in the usual morning traffic jam, he couldn't help +noticing that there seemed to be a lot of strangely dressed people +about. People in cloaks. Mr. Dursley couldn't bear people who dressed in +funny clothes -- the getups you saw on young people! He supposed this +was some stupid new fashion. He drummed his fingers on the steering +wheel and his eyes fell on a huddle of these weirdos standing quite +close by. They were whispering excitedly together. Mr. Dursley was +enraged to see that a couple of them weren't young at all; why, that man +had to be older than he was, and wearing an emerald-green cloak! The +nerve of him! But then it struck Mr. Dursley that this was probably some +silly stunt -- these people were obviously collecting for something... +yes, that would be it. The traffic moved on and a few minutes later, Mr. +Dursley arrived in the Grunnings parking lot, his mind back on drills. + +Mr. Dursley always sat with his back to the window in his office on the +ninth floor. If he hadn't, he might have found it harder to concentrate +on drills that morning. He didn't see the owls swoop ing past in broad +daylight, though people down in the street did; they pointed and gazed +open- mouthed as owl after owl sped overhead. Most of them had never +seen an owl even at nighttime. Mr. Dursley, however, had a perfectly +normal, owl-free morning. He yelled at five different people. He made +several important telephone calls and shouted a bit more. He was in a +very good mood until lunchtime, when he thought he'd stretch his legs +and walk across the road to buy himself a bun from the bakery. + +He'd forgotten all about the people in cloaks until he passed a group of +them next to the baker's. He eyed them angrily as he passed. He didn't +know why, but they made him uneasy. This bunch were whispering +excitedly, too, and he couldn't see a single collecting tin. It was on +his way back past them, clutching a large doughnut in a bag, that he +caught a few words of what they were saying. + +'The Potters, that's right, that's what I heard yes, their son, Harry' + +Mr. Dursley stopped dead. Fear flooded him. He looked back at the +whisperers as if he wanted to say something to them, but thought better +of it. + +He dashed back across the road, hurried up to his office, snapped at his +secretary not to disturb him, seized his telephone, and had almost +finished dialing his home number when he changed his mind. He put the +receiver back down and stroked his mustache, thinking... no, he was +being stupid. Potter wasn't such an unusual name. He was sure there were +lots of people called Potter who had a son called Harry. Come to think +of it, he wasn't even sure his nephew was called Harry. He'd never even +seen the boy. It might have been Harvey. Or Harold. There was no point +in worrying Mrs. Dursley; she always got so upset at any mention of her +sister. He didn't blame her -- if he'd had a sister like that... but all +the same, those people in cloaks... + +He found it a lot harder to concentrate on drills that afternoon and +when he left the building at five o'clock, he was still so worried that +he walked straight into someone just outside the door. + +'Sorry,' he grunted, as the tiny old man stumbled and almost fell. It +was a few seconds before Mr. Dursley realized that the man was wearing a +violet cloak. He didn't seem at all upset at being almost knocked to the +ground. On the contrary, his face split into a wide smile and he said in +a squeaky voice that made passersby stare, 'Don't be sorry, my dear sir, +for nothing could upset me today! Rejoice, for You-Know-Who has gone at +last! Even Muggles like yourself should be celebrating, this happy, +happy day!' + +And the old man hugged Mr. Dursley around the middle and walked off. + +Mr. Dursley stood rooted to the spot. He had been hugged by a complete +stranger. He also thought he had been called a Muggle, whatever that +was. He was rattled. He hurried to his car and set off for home, hoping +he was imagining things, which he had never hoped before, because he +didn't approve of imagination. + +As he pulled into the driveway of number four, the first thing he saw -- +and it didn't improve his mood -- was the tabby cat he'd spotted that +morning. It was now sitting on his garden wall. He was sure it was the +same one; it had the same markings around its eyes. + +'Shoo!' said Mr. Dursley loudly. The cat didn't move. It just gave him a +stern look. Was this normal cat behavior? Mr. Dursley wondered. Trying +to pull himself together, he let himself into the house. He was still +determined not to mention anything to his wife. + +Mrs. Dursley had had a nice, normal day. She told him over dinner all +about Mrs. Next Door's problems with her daughter and how Dudley had +learned a new word ('Won't!'). Mr. Dursley tried to act normally. When +Dudley had been put to bed, he went into the living room in time to +catch the last report on the evening news: + +'And finally, bird-watchers everywhere have reported that the nation's +owls have been behaving very unusually today. Although owls normally +hunt at night and are hardly ever seen in daylight, there have been +hundreds of sightings of these birds flying in every direction since +sunrise. Experts are unable to explain why the owls have suddenly +changed their sleeping pattern.' The newscaster allowed himself a grin. +'Most mysterious. And now, over to Jim McGuffin with the weather. Going +to be any more showers of owls tonight, Jim?' + +'Well, Ted,' said the weatherman, 'I don't know about that, but it's not +only the owls that have been acting oddly today. Viewers as far apart as +Kent, Yorkshire, and Dundee have been phoning in to tell me that instead +of the rain I promised yesterday, they've had a downpour of shooting +stars! Perhaps people have been celebrating Bonfire Night early -- it's +not until next week, folks! But I can promise a wet night tonight.' + +Mr. Dursley sat frozen in his armchair. Shooting stars all over Britain? +Owls flying by daylight? Mysterious people in cloaks all over the place? +And a whisper, a whisper about the Potters... + +Mrs. Dursley came into the living room carrying two cups of tea. It was +no good. He'd have to say something to her. He cleared his throat +nervously. 'Er -- Petunia, dear -- you haven't heard from your sister +lately, have you?' + +As he had expected, Mrs. Dursley looked shocked and angry. After all, +they normally pretended she didn't have a sister. + +'No,' she said sharply. 'Why?' + +'Funny stuff on the news,' Mr. Dursley mumbled. 'Owls... shooting +stars... and there were a lot of funny-looking people in town today...' + +'So?' snapped Mrs. Dursley. + +'Well, I just thought... maybe... it was something to do with... you +know... her crowd.' + +Mrs. Dursley sipped her tea through pursed lips. Mr. Dursley wondered +whether he dared tell her he'd heard the name 'Potter.' He decided he +didn't dare. Instead he said, as casually as he could, 'Their son -- +he'd be about Dudley's age now, wouldn't he?' + +'I suppose so,' said Mrs. Dursley stiffly. + +'What's his name again? Howard, isn't it?' + +'Harry. Nasty, common name, if you ask me.' + +'Oh, yes,' said Mr. Dursley, his heart sinking horribly. 'Yes, I quite +agree.' + +He didn't say another word on the subject as they went upstairs to bed. +While Mrs. Dursley was in the bathroom, Mr. Dursley crept to the bedroom +window and peered down into the front garden. The cat was still there. +It was staring down Privet Drive as though it were waiting for +something. + +Was he imagining things? Could all this have anything to do with the +Potters? If it did... if it got out that they were related to a pair of +-- well, he didn't think he could bear it. + +The Dursleys got into bed. Mrs. Dursley fell asleep quickly but Mr. +Dursley lay awake, turning it all over in his mind. His last, comforting +thought before he fell asleep was that even if the Potters were +involved, there was no reason for them to come near him and Mrs. +Dursley. The Potters knew very well what he and Petunia thought about +them and their kind.... He couldn't see how he and Petunia could get +mixed up in anything that might be going on -- he yawned and turned over +-- it couldn't affect them.... + +How very wrong he was. + +Mr. Dursley might have been drifting into an uneasy sleep, but the cat +on the wall outside was showing no sign of sleepiness. It was sitting as +still as a statue, its eyes fixed unblinkingly on the far corner of +Privet Drive. It didn't so much as quiver when a car door slammed on the +next street, nor when two owls swooped overhead. In fact, it was nearly +midnight before the cat moved at all. + +A man appeared on the corner the cat had been watching, appeared so +suddenly and silently you'd have thought he'd just popped out of the +ground. The cat's tail twitched and its eyes narrowed. + +Nothing like this man had ever been seen on Privet Drive. He was tall, +thin, and very old, judging by the silver of his hair and beard, which +were both long enough to tuck into his belt. He was wearing long robes, +a purple cloak that swept the ground, and high-heeled, buckled boots. +His blue eyes were light, bright, and sparkling behind half-moon +spectacles and his nose was very long and crooked, as though it had been +broken at least twice. This man's name was Albus Dumbledore. + +Albus Dumbledore didn't seem to realize that he had just arrived in a +street where everything from his name to his boots was unwelcome. He was +busy rummaging in his cloak, looking for something. But he did seem to +realize he was being watched, because he looked up suddenly at the cat, +which was still staring at him from the other end of the street. For +some reason, the sight of the cat seemed to amuse him. He chuckled and +muttered, 'I should have known.' + +He found what he was looking for in his inside pocket. It seemed to be a +silver cigarette lighter. He flicked it open, held it up in the air, and +clicked it. The nearest street lamp went out with a little pop. He +clicked it again -- the next lamp flickered into darkness. Twelve times +he clicked the Put-Outer, until the only lights left on the whole street +were two tiny pinpricks in the distance, which were the eyes of the cat +watching him. If anyone looked out of their window now, even beady-eyed +Mrs. Dursley, they wouldn't be able to see anything that was happening +down on the pavement. Dumbledore slipped the Put-Outer back inside his +cloak and set off down the street toward number four, where he sat down +on the wall next to the cat. He didn't look at it, but after a moment he +spoke to it. + +'Fancy seeing you here, Professor McGonagall.' + +He turned to smile at the tabby, but it had gone. Instead he was smiling +at a rather severe-looking woman who was wearing square glasses exactly +the shape of the markings the cat had had around its eyes. She, too, was +wearing a cloak, an emerald one. Her black hair was drawn into a tight +bun. She looked distinctly ruffled. + +'How did you know it was me?' she asked. + +'My dear Professor, I 've never seen a cat sit so stiffly.' + +'You'd be stiff if you'd been sitting on a brick wall all day,' said +Professor McGonagall. + +'All day? When you could have been celebrating? I must have passed a +dozen feasts and parties on my way here.' + +Professor McGonagall sniffed angrily. + +'Oh yes, everyone's celebrating, all right,' she said impatiently. +'You'd think they'd be a bit more careful, but no -- even the Muggles +have noticed something's going on. It was on their news.' She jerked her +head back at the Dursleys' dark living-room window. 'I heard it. Flocks +of owls... shooting stars.... Well, they're not completely stupid. They +were bound to notice something. Shooting stars down in Kent -- I'll bet +that was Dedalus Diggle. He never had much sense.' + +'You can't blame them,' said Dumbledore gently. 'We've had precious +little to celebrate for eleven years.' + +'I know that,' said Professor McGonagall irritably. 'But that's no +reason to lose our heads. People are being downright careless, out on +the streets in broad daylight, not even dressed in Muggle clothes, +swapping rumors.' + +She threw a sharp, sideways glance at Dumbledore here, as though hoping +he was going to tell her something, but he didn't, so she went on. 'A +fine thing it would be if, on the very day YouKnow-Who seems to have +disappeared at last, the Muggles found out about us all. I suppose he +really has gone, Dumbledore?' + +'It certainly seems so,' said Dumbledore. 'We have much to be thankful +for. Would you care for a lemon drop?' + +'A what?' + +'A lemon drop. They're a kind of Muggle sweet I'm rather fond of' + +'No, thank you,' said Professor McGonagall coldly, as though she didn't +think this was the moment for lemon drops. 'As I say, even if +You-Know-Who has gone -' + +'My dear Professor, surely a sensible person like yourself can call him +by his name? All this 'You- Know-Who' nonsense -- for eleven years I +have been trying to persuade people to call him by his proper name: +Voldemort.' Professor McGonagall flinched, but Dumbledore, who was +unsticking two lemon drops, seemed not to notice. 'It all gets so +confusing if we keep saying 'You-Know-Who.' I have never seen any reason +to be frightened of saying Voldemort's name. + +'I know you haven 't, said Professor McGonagall, sounding half +exasperated, half admiring. 'But you're different. Everyone knows you're +the only one You-Know- oh, all right, Voldemort, was frightened of.' + +'You flatter me,' said Dumbledore calmly. 'Voldemort had powers I will +never have.' + +'Only because you're too -- well -- noble to use them.' + +'It's lucky it's dark. I haven't blushed so much since Madam Pomfrey +told me she liked my new earmuffs.' + +Professor McGonagall shot a sharp look at Dumbledore and said, 'The owls +are nothing next to the rumors that are flying around. You know what +everyone's saying? About why he's disappeared? About what finally +stopped him?' + +It seemed that Professor McGonagall had reached the point she was most +anxious to discuss, the real reason she had been waiting on a cold, hard +wall all day, for neither as a cat nor as a woman had she fixed +Dumbledore with such a piercing stare as she did now. It was plain that +whatever 'everyone' was saying, she was not going to believe it until +Dumbledore told her it was true. Dumbledore, however, was choosing +another lemon drop and did not answer. + +'What they're saying,' she pressed on, 'is that last night Voldemort +turned up in Godric's Hollow. He went to find the Potters. The rumor is +that Lily and James Potter are -- are -- that they're -- dead. ' + +Dumbledore bowed his head. Professor McGonagall gasped. + +'Lily and James... I can't believe it... I didn't want to believe it... +Oh, Albus...' + +Dumbledore reached out and patted her on the shoulder. 'I know... I +know...' he said heavily. + +Professor McGonagall's voice trembled as she went on. 'That's not all. +They're saying he tried to kill the Potter's son, Harry. But -- he +couldn't. He couldn't kill that little boy. No one knows why, or how, +but they're saying that when he couldn't kill Harry Potter, Voldemort's +power somehow broke -- and that's why he's gone. + +Dumbledore nodded glumly. + +'It's -- it's true?' faltered Professor McGonagall. 'After all he's +done... all the people he's killed... he couldn't kill a little boy? +It's just astounding... of all the things to stop him... but how in the +name of heaven did Harry survive?' + +'We can only guess,' said Dumbledore. 'We may never know.' + +Professor McGonagall pulled out a lace handkerchief and dabbed at her +eyes beneath her spectacles. Dumbledore gave a great sniff as he took a +golden watch from his pocket and examined it. It was a very odd watch. +It had twelve hands but no numbers; instead, little planets were moving +around the edge. It must have made sense to Dumbledore, though, because +he put it back in his pocket and said, 'Hagrid's late. I suppose it was +he who told you I'd be here, by the way?' + +'Yes,' said Professor McGonagall. 'And I don't suppose you're going to +tell me why you're here, of all places?' + +'I've come to bring Harry to his aunt and uncle. They're the only family +he has left now.' + +'You don't mean -- you can't mean the people who live here?' cried +Professor McGonagall, jumping to her feet and pointing at number four. +'Dumbledore -- you can't. I've been watching them all day. You couldn't +find two people who are less like us. And they've got this son -- I saw +him kicking his mother all the way up the street, screaming for sweets. +Harry Potter come and live here!' + +'It's the best place for him,' said Dumbledore firmly. 'His aunt and +uncle will be able to explain everything to him when he's older. I've +written them a letter.' + +'A letter?' repeated Professor McGonagall faintly, sitting back down on +the wall. 'Really, Dumbledore, you think you can explain all this in a +letter? These people will never understand him! He'll be famous -- a +legend -- I wouldn't be surprised if today was known as Harry Potter day +in the future -- there will be books written about Harry -- every child +in our world will know his name!' + +'Exactly,' said Dumbledore, looking very seriously over the top of his +half-moon glasses. 'It would be enough to turn any boy's head. Famous +before he can walk and talk! Famous for something he won't even +remember! CarA you see how much better off he'll be, growing up away +from all that until he's ready to take it?' + +Professor McGonagall opened her mouth, changed her mind, swallowed, and +then said, 'Yes -- yes, you're right, of course. But how is the boy +getting here, Dumbledore?' She eyed his cloak suddenly as though she +thought he might be hiding Harry underneath it. + +'Hagrid's bringing him.' + +'You think it -- wise -- to trust Hagrid with something as important as +this?' + +I would trust Hagrid with my life,' said Dumbledore. + +'I'm not saying his heart isn't in the right place,' said Professor +McGonagall grudgingly, 'but you can't pretend he's not careless. He does +tend to -- what was that?' + +A low rumbling sound had broken the silence around them. It grew +steadily louder as they looked up and down the street for some sign of a +headlight; it swelled to a roar as they both looked up at the sky -- and +a huge motorcycle fell out of the air and landed on the road in front of +them. + +If the motorcycle was huge, it was nothing to the man sitting astride +it. He was almost twice as tall as a normal man and at least five times +as wide. He looked simply too big to be allowed, and so wild - long +tangles of bushy black hair and beard hid most of his face, he had hands +the size of trash can lids, and his feet in their leather boots were +like baby dolphins. In his vast, muscular arms he was holding a bundle +of blankets. + +'Hagrid,' said Dumbledore, sounding relieved. 'At last. And where did +you get that motorcycle?' + +'Borrowed it, Professor Dumbledore, sit,' said the giant, climbing +carefully off the motorcycle as he spoke. 'Young Sirius Black lent it to +me. I've got him, sir.' + +'No problems, were there?' + +'No, sir -- house was almost destroyed, but I got him out all right +before the Muggles started swarmin' around. He fell asleep as we was +flyin' over Bristol.' + +Dumbledore and Professor McGonagall bent forward over the bundle of +blankets. Inside, just visible, was a baby boy, fast asleep. Under a +tuft of jet-black hair over his forehead they could see a curiously +shaped cut, like a bolt of lightning. + +'Is that where -?' whispered Professor McGonagall. + +'Yes,' said Dumbledore. 'He'll have that scar forever.' + +'Couldn't you do something about it, Dumbledore?' + +'Even if I could, I wouldn't. Scars can come in handy. I have one myself +above my left knee that is a perfect map of the London Underground. Well +-- give him here, Hagrid -- we'd better get this over with.' + +Dumbledore took Harry in his arms and turned toward the Dursleys' house. + +'Could I -- could I say good-bye to him, sir?' asked Hagrid. He bent his +great, shaggy head over Harry and gave him what must have been a very +scratchy, whiskery kiss. Then, suddenly, Hagrid let out a howl like a +wounded dog. + +'Shhh!' hissed Professor McGonagall, 'you'll wake the Muggles!' + +'S-s-sorry,' sobbed Hagrid, taking out a large, spotted handkerchief and +burying his face in it. 'But I c-c-can't stand it -- Lily an' James dead +-- an' poor little Harry off ter live with Muggles -' + +'Yes, yes, it's all very sad, but get a grip on yourself, Hagrid, or +we'll be found,' Professor McGonagall whispered, patting Hagrid gingerly +on the arm as Dumbledore stepped over the low garden wall and walked to +the front door. He laid Harry gently on the doorstep, took a letter out +of his cloak, tucked it inside Harry's blankets, and then came back to +the other two. For a full minute the three of them stood and looked at +the little bundle; Hagrid's shoulders shook, Professor McGonagall +blinked furiously, and the twinkling light that usually shone from +Dumbledore's eyes seemed to have gone out. + +'Well,' said Dumbledore finally, 'that's that. We've no business staying +here. We may as well go and join the celebrations.' + +'Yeah,' said Hagrid in a very muffled voice, 'I'll be takin' Sirius his +bike back. G'night, Professor McGonagall -- Professor Dumbledore, sir.' + +Wiping his streaming eyes on his jacket sleeve, Hagrid swung himself +onto the motorcycle and kicked the engine into life; with a roar it rose +into the air and off into the night. + +'I shall see you soon, I expect, Professor McGonagall,' said Dumbledore, +nodding to her. Professor McGonagall blew her nose in reply. + +Dumbledore turned and walked back down the street. On the corner he +stopped and took out the silver Put-Outer. He clicked it once, and +twelve balls of light sped back to their street lamps so that Privet +Drive glowed suddenly orange and he could make out a tabby cat slinking +around the corner at the other end of the street. He could just see the +bundle of blankets on the step of number four. + +'Good luck, Harry,' he murmured. He turned on his heel and with a swish +of his cloak, he was gone. + +A breeze ruffled the neat hedges of Privet Drive, which lay silent and +tidy under the inky sky, the very last place you would expect +astonishing things to happen. Harry Potter rolled over inside his +blankets without waking up. One small hand closed on the letter beside +him and he slept on, not knowing he was special, not knowing he was +famous, not knowing he would be woken in a few hours' time by Mrs. +Dursley's scream as she opened the front door to put out the milk +bottles, nor that he would spend the next few weeks being prodded and +pinched by his cousin Dudley... He couldn't know that at this very +moment, people meeting in secret all over the country were holding up +their glasses and saying in hushed voices: 'To Harry Potter -- the boy +who lived!' + + +CHAPTER TWO + +THE VANISHING GLASS + +Nearly ten years had passed since the Dursleys had woken up to find +their nephew on the front step, but Privet Drive had hardly changed at +all. The sun rose on the same tidy front gardens and lit up the brass +number four on the Dursleys' front door; it crept into their living +room, which was almost exactly the same as it had been on the night when +Mr. Dursley had seen that fateful news report about the owls. Only the +photographs on the mantelpiece really showed how much time had passed. +Ten years ago, there had been lots of pictures of what looked like a +large pink beach ball wearing different-colored bonnets -- but Dudley +Dursley was no longer a baby, and now the photographs showed a large +blond boy riding his first bicycle, on a carousel at the fair, playing a +computer game with his father, being hugged and kissed by his mother. +The room held no sign at all that another boy lived in the house, too. + +Yet Harry Potter was still there, asleep at the moment, but not for +long. His Aunt Petunia was awake and it was her shrill voice that made +the first noise of the day. + +'Up! Get up! Now!' + +Harry woke with a start. His aunt rapped on the door again. + +'Up!' she screeched. Harry heard her walking toward the kitchen and then +the sound of the frying pan being put on the stove. He rolled onto his +back and tried to remember the dream he had been having. It had been a +good one. There had been a flying motorcycle in it. He had a funny +feeling he'd had the same dream before. + +His aunt was back outside the door. + +'Are you up yet?' she demanded. + +'Nearly,' said Harry. + +'Well, get a move on, I want you to look after the bacon. And don't you +dare let it burn, I want everything perfect on Duddy's birthday.' + +Harry groaned. + +'What did you say?' his aunt snapped through the door. + +'Nothing, nothing...' + +Dudley's birthday -- how could he have forgotten? Harry got slowly out +of bed and started looking for socks. He found a pair under his bed and, +after pulling a spider off one of them, put them on. Harry was used to +spiders, because the cupboard under the stairs was full of them, and +that was where he slept. + +When he was dressed he went down the hall into the kitchen. The table +was almost hidden beneath all Dudley's birthday presents. It looked as +though Dudley had gotten the new computer he wanted, not to mention the +second television and the racing bike. Exactly why Dudley wanted a +racing bike was a mystery to Harry, as Dudley was very fat and hated +exercise -- unless of course it involved punching somebody. Dudley's +favorite punching bag was Harry, but he couldn't often catch him. Harry +didn't look it, but he was very fast. + +Perhaps it had something to do with living in a dark cupboard, but Harry +had always been small and skinny for his age. He looked even smaller and +skinnier than he really was because all he had to wear were old clothes +of Dudley's, and Dudley was about four times bigger than he was. Harry +had a thin face, knobbly knees, black hair, and bright green eyes. He +wore round glasses held together with a lot of Scotch tape because of +all the times Dudley had punched him on the nose. The only thing Harry +liked about his own appearance was a very thin scar on his forehead that +was shaped like a bolt of lightning. He had had it as long as he could +remember, and the first question he could ever remember asking his Aunt +Petunia was how he had gotten it. + +'In the car crash when your parents died,' she had said. 'And don't ask +questions.' + +Don't ask questions -- that was the first rule for a quiet life with the +Dursleys. + +Uncle Vernon entered the kitchen as Harry was turning over the bacon. + +'Comb your hair!' he barked, by way of a morning greeting. + +About once a week, Uncle Vernon looked over the top of his newspaper and +shouted that Harry needed a haircut. Harry must have had more haircuts +than the rest of the boys in his class put + +together, but it made no difference, his hair simply grew that way -- +all over the place. + +Harry was frying eggs by the time Dudley arrived in the kitchen with his +mother. Dudley looked a lot like Uncle Vernon. He had a large pink face, +not much neck, small, watery blue eyes, and thick blond hair that lay +smoothly on his thick, fat head. Aunt Petunia often said that Dudley +looked like a baby angel -- Harry often said that Dudley looked like a +pig in a wig. + +Harry put the plates of egg and bacon on the table, which was difficult +as there wasn't much room. Dudley, meanwhile, was counting his presents. +His face fell. + +'Thirty-six,' he said, looking up at his mother and father. 'That's two +less than last year.' + +'Darling, you haven't counted Auntie Marge's present, see, it's here +under this big one from Mommy and Daddy.' + +'All right, thirty-seven then,' said Dudley, going red in the face. +Harry, who could see a huge Dudley tantrum coming on, began wolfing down +his bacon as fast as possible in case Dudley turned the table over. + +Aunt Petunia obviously scented danger, too, because she said quickly, +'And we'll buy you another two presents while we're out today. How's +that, popkin? Two more presents. Is that all right'' + +Dudley thought for a moment. It looked like hard work. Finally he said +slowly, 'So I'll have thirty ... thirty...' + +'Thirty-nine, sweetums,' said Aunt Petunia. + +'Oh.' Dudley sat down heavily and grabbed the nearest parcel. 'All right +then.' + +Uncle Vernon chuckled. 'Little tyke wants his money's worth, just like +his father. 'Atta boy, Dudley!' He ruffled Dudley's hair. + +At that moment the telephone rang and Aunt Petunia went to answer it +while Harry and Uncle Vernon watched Dudley unwrap the racing bike, a +video camera, a remote control airplane, sixteen new computer games, and +a VCR. He was ripping the paper off a gold wristwatch when Aunt Petunia +came back from the telephone looking both angry and worried. + +'Bad news, Vernon,' she said. 'Mrs. Figg's broken her leg. She can't +take him.' She jerked her head in Harry's direction. + +Dudley's mouth fell open in horror, but Harry's heart gave a leap. Every +year on Dudley's birthday, his parents took him and a friend out for the +day, to adventure parks, hamburger restaurants, or the movies. Every +year, Harry was left behind with Mrs. Figg, a mad old lady who lived two +streets away. Harry hated it there. The whole house smelled of cabbage +and Mrs. Figg made him look at photographs of all the cats she'd ever +owned. + +'Now what?' said Aunt Petunia, looking furiously at Harry as though he'd +planned this. Harry knew he ought to feel sorry that Mrs. Figg had +broken her leg, but it wasn't easy when he reminded himself it would be +a whole year before he had to look at Tibbles, Snowy, Mr. Paws, and +Tufty again. + +'We could phone Merge,' Uncle Vernon suggested. + +'Don't be silly, Vernon, she hates the boy.' + +The Dursleys often spoke about Harry like this, as though he wasn't +there -- or rather, as though he was something very nasty that couldn't +understand them, like a slug. + +'What about what's-her-name, your friend -- Yvonne?' + +'On vacation in Majorca,' snapped Aunt Petunia. + +'You could just leave me here,' Harry put in hopefully (he'd be able to +watch what he wanted on television for a change and maybe even have a go +on Dudley's computer). + +Aunt Petunia looked as though she'd just swallowed a lemon. + +'And come back and find the house in ruins?' she snarled. + +'I won't blow up the house,' said Harry, but they weren't listening. + +'I suppose we could take him to the zoo,' said Aunt Petunia slowly, '... +and leave him in the car....' + +'That car's new, he's not sitting in it alone....' + +Dudley began to cry loudly. In fact, he wasn't really crying -- it had +been years since he'd really cried -- but he knew that if he screwed up +his face and wailed, his mother would give him anything he wanted. + +'Dinky Duddydums, don't cry, Mummy won't let him spoil your special +day!' she cried, flinging her arms around him. + +'I... don't... want... him... t-t-to come!' Dudley yelled between huge, +pretend sobs. 'He always sp- spoils everything!' He shot Harry a nasty +grin through the gap in his mother's arms. + +Just then, the doorbell rang -- 'Oh, good Lord, they're here!' said Aunt +Petunia frantically -- and a moment later, Dudley's best friend, Piers +Polkiss, walked in with his mother. Piers was a scrawny boy with a face +like a rat. He was usually the one who held people's arms behind their +backs while Dudley hit them. Dudley stopped pretending to cry at once. + +Half an hour later, Harry, who couldn't believe his luck, was sitting in +the back of the Dursleys' car with Piers and Dudley, on the way to the +zoo for the first time in his life. His aunt and uncle hadn't been able +to think of anything else to do with him, but before they'd left, Uncle +Vernon had taken Harry aside. + +'I'm warning you,' he had said, putting his large purple face right up +close to Harry's, 'I'm warning you now, boy -- any funny business, +anything at all -- and you'll be in that cupboard from now until +Christmas.' + +'I'm not going to do anything,' said Harry, 'honestly.. + +But Uncle Vernon didn't believe him. No one ever did. + +The problem was, strange things often happened around Harry and it was +just no good telling the Dursleys he didn't make them happen. + +Once, Aunt Petunia, tired of Harry coming back from the barbers looking +as though he hadn't been at all, had taken a pair of kitchen scissors +and cut his hair so short he was almost bald except for his bangs, which +she left 'to hide that horrible scar.' Dudley had laughed himself silly +at Harry, who spent a sleepless night imagining school the next day, +where he was already laughed at for his baggy clothes and taped glasses. +Next morning, however, he had gotten up to find his hair exactly as it +had been before Aunt Petunia had sheared it off He had been given a week +in his cupboard for this, even though he had tried to explain that he +couldn't explain how it had grown back so quickly. + +Another time, Aunt Petunia had been trying to force him into a revolting +old sweater of Dudley's (brown with orange puff balls) -- The harder she +tried to pull it over his head, the smaller it seemed to become, until +finally it might have fitted a hand puppet, but certainly wouldn't fit +Harry. Aunt Petunia had decided it must have shrunk in the wash and, to +his great relief, Harry wasn't punished. + +On the other hand, he'd gotten into terrible trouble for being found on +the roof of the school kitchens. Dudley's gang had been chasing him as +usual when, as much to Harry's surprise as anyone else's, there he was +sitting on the chimney. The Dursleys had received a very angry letter +from Harry's headmistress telling them Harry had been climbing school +buildings. But all he'd tried to do (as he shouted at Uncle Vernon +through the locked door of his cupboard) was jump behind the big trash +cans outside the kitchen doors. Harry supposed that the wind must have +caught him in mid- jump. + +But today, nothing was going to go wrong. It was even worth being with +Dudley and Piers to be spending the day somewhere that wasn't school, +his cupboard, or Mrs. Figg's cabbage-smelling living room. + +While he drove, Uncle Vernon complained to Aunt Petunia. He liked to +complain about things: people at work, Harry, the council, Harry, the +bank, and Harry were just a few of his favorite subjects. This morning, +it was motorcycles. + +'... roaring along like maniacs, the young hoodlums,' he said, as a +motorcycle overtook them. + +I had a dream about a motorcycle,' said Harry, remembering suddenly. 'It +was flying.' + +Uncle Vernon nearly crashed into the car in front. He turned right +around in his seat and yelled at Harry, his face like a gigantic beet +with a mustache: 'MOTORCYCLES DON'T FLY!' + +Dudley and Piers sniggered. + +I know they don't,' said Harry. 'It was only a dream.' + +But he wished he hadn't said anything. If there was one thing the +Dursleys hated even more than his asking questions, it was his talking +about anything acting in a way it shouldn't, no matter if it was in a +dream or even a cartoon -- they seemed to think he might get dangerous +ideas. + +It was a very sunny Saturday and the zoo was crowded with families. The +Dursleys bought Dudley and Piers large chocolate ice creams at the +entrance and then, because the smiling lady in the van had asked Harry +what he wanted before they could hurry him away, they bought him a cheap +lemon ice pop. It wasn't bad, either, Harry thought, licking it as they +watched a gorilla scratching its head who looked remarkably like Dudley, +except that it wasn't blond. + +Harry had the best morning he'd had in a long time. He was careful to +walk a little way apart from the Dursleys so that Dudley and Piers, who +were starting to get bored with the animals by lunchtime, wouldn't fall +back on their favorite hobby of hitting him. They ate in the zoo +restaurant, and when Dudley had a tantrum because his knickerbocker +glory didn't have enough ice cream on top, Uncle Vernon bought him +another one and Harry was allowed to finish the first. + +Harry felt, afterward, that he should have known it was all too good to +last. + +After lunch they went to the reptile house. It was cool and dark in +there, with lit windows all along the walls. Behind the glass, all sorts +of lizards and snakes were crawling and slithering over bits of wood and +stone. Dudley and Piers wanted to see huge, poisonous cobras and thick, +man-crushing pythons. Dudley quickly found the largest snake in the +place. It could have wrapped its body twice around Uncle Vernon's car +and crushed it into a trash can -- but at the moment it didn't look in +the mood. In fact, it was fast asleep. + +Dudley stood with his nose pressed against the glass, staring at the +glistening brown coils. + +'Make it move,' he whined at his father. Uncle Vernon tapped on the +glass, but the snake didn't budge. + +'Do it again,' Dudley ordered. Uncle Vernon rapped the glass smartly +with his knuckles, but the snake just snoozed on. + +'This is boring,' Dudley moaned. He shuffled away. + +Harry moved in front of the tank and looked intently at the snake. He +wouldn't have been surprised if it had died of boredom itself -- no +company except stupid people drumming their fingers on the glass trying +to disturb it all day long. It was worse than having a cupboard as a +bedroom, where the only visitor was Aunt Petunia hammering on the door +to wake you up; at least he got to visit the rest of the house. + +The snake suddenly opened its beady eyes. Slowly, very slowly, it raised +its head until its eyes were on a level with Harry's. + +It winked. + +Harry stared. Then he looked quickly around to see if anyone was +watching. They weren't. He looked back at the snake and winked, too. + +The snake jerked its head toward Uncle Vernon and Dudley, then raised +its eyes to the ceiling. It gave Harry a look that said quite plainly: + +'I get that all the time. + +'I know,' Harry murmured through the glass, though he wasn't sure the +snake could hear him. 'It must be really annoying.' + +The snake nodded vigorously. + +'Where do you come from, anyway?' Harry asked. + +The snake jabbed its tail at a little sign next to the glass. Harry +peered at it. + +Boa Constrictor, Brazil. + +'Was it nice there?' + +The boa constrictor jabbed its tail at the sign again and Harry read on: +This specimen was bred in the zoo. 'Oh, I see -- so you've never been to +Brazil?' + +As the snake shook its head, a deafening shout behind Harry made both of +them jump. + +'DUDLEY! MR. DURSLEY! COME AND LOOK AT THIS SNAKE! YOU WON'T BELIEVE +WHAT IT'S DOING!' + +Dudley came waddling toward them as fast as he could. + +'Out of the way, you,' he said, punching Harry in the ribs. Caught by +surprise, Harry fell hard on the concrete floor. What came next happened +so fast no one saw how it happened -- one second, Piers and Dudley were +leaning right up close to the glass, the next, they had leapt back with +howls of horror. + +Harry sat up and gasped; the glass front of the boa constrictor's tank +had vanished. The great snake was uncoiling itself rapidly, slithering +out onto the floor. People throughout the reptile house screamed and +started running for the exits. + +As the snake slid swiftly past him, Harry could have sworn a low, +hissing voice said, 'Brazil, here I come.... Thanksss, amigo.' + +The keeper of the reptile house was in shock. + +'But the glass,' he kept saying, 'where did the glass go?' + +The zoo director himself made Aunt Petunia a cup of strong, sweet tea +while he apologized over and over again. Piers and Dudley could only +gibber. As far as Harry had seen, the snake hadn't done anything except +snap playfully at their heels as it passed, but by the time they were +all back in Uncle Vernon's car, Dudley was telling them how it had +nearly bitten off his leg, while Piers was swearing it had tried to +squeeze him to death. But worst of all, for Harry at least, was Piers +calming down enough to say, 'Harry was talking to it, weren't you, +Harry?' + +Uncle Vernon waited until Piers was safely out of the house before +starting on Harry. He was so angry he could hardly speak. He managed to +say, 'Go -- cupboard -- stay -- no meals,' before he collapsed into a +chair, and Aunt Petunia had to run and get him a large brandy. + +Harry lay in his dark cupboard much later, wishing he had a watch. He +didn't know what time it was and he couldn't be sure the Dursleys were +asleep yet. Until they were, he couldn't risk sneaking to the kitchen +for some food. + +He'd lived with the Dursleys almost ten years, ten miserable years, as +long as he could remember, ever since he'd been a baby and his parents +had died in that car crash. He couldn't remember being in the car when +his parents had died. Sometimes, when he strained his memory during long +hours in his cupboard, he came up with a strange vision: a blinding +flash of green light and a burn- ing pain on his forehead. This, he +supposed, was the crash, though he couldn't imagine where all the green +light came from. He couldn't remember his parents at all. His aunt and +uncle never spoke about them, and of course he was forbidden to ask +questions. There were no photographs of them in the house. + +When he had been younger, Harry had dreamed and dreamed of some unknown +relation coming to take him away, but it had never happened; the +Dursleys were his only family. Yet sometimes he thought (or maybe hoped) +that strangers in the street seemed to know him. Very strange strangers +they were, too. A tiny man in a violet top hat had bowed to him once +while out shopping with Aunt Petunia and Dudley. After asking Harry +furiously if he knew the man, Aunt Petunia had rushed them out of the +shop without buying anything. A wild-looking old woman dressed all in +green had waved merrily at him once on a bus. A bald man in a very long +purple coat had actually shaken his hand in the street the other day and +then walked away without a word. The weirdest thing about all these +people was the way they seemed to vanish the second Harry tried to get a +closer look. + +At school, Harry had no one. Everybody knew that Dudley's gang hated +that odd Harry Potter in his baggy old clothes and broken glasses, and +nobody liked to disagree with Dudley's gang. + + +CHAPTER THREE + +THE LETTERS FROM NO ONE + +The escape of the Brazilian boa constrictor earned Harry his +longest-ever punishment. By the time he was allowed out of his cupboard +again, the summer holidays had started and Dudley had already broken his +new video camera, crashed his remote control airplane, and, first time +out on his racing bike, knocked down old Mrs. Figg as she crossed Privet +Drive on her crutches. + +Harry was glad school was over, but there was no escaping Dudley's gang, +who visited the house every single day. Piers, Dennis, Malcolm, and +Gordon were all big and stupid, but as Dudley was the biggest and +stupidest of the lot, he was the leader. The rest of them were all quite +happy to join in Dudley's favorite sport: Harry Hunting. + +This was why Harry spent as much time as possible out of the house, +wandering around and thinking about the end of the holidays, where he +could see a tiny ray of hope. When September came he would be going off +to secondary school and, for the first time in his life, he wouldn't be +with Dudley. Dudley had been accepted at Uncle Vernon's old private +school, Smeltings. Piers Polkiss was going there too. Harry, on the +other hand, was going to Stonewall High, the local public school. Dudley +thought this was very funny. + +'They stuff people's heads down the toilet the first day at Stonewall,' +he told Harry. 'Want to come upstairs and practice?' + +'No, thanks,' said Harry. 'The poor toilet's never had anything as +horrible as your head down it -- it might be sick.' Then he ran, before +Dudley could work out what he'd said. + +One day in July, Aunt Petunia took Dudley to London to buy his Smeltings +uniform, leaving Harry at Mrs. Figg's. Mrs. Figg wasn 't as bad as +usual. It turned out she'd broken her leg tripping over one of her cats, +and she didn't seem quite as fond of them as before. She let Harry watch +television and gave him a bit of chocolate cake that tasted as though +she'd had it for several years. + +That evening, Dudley paraded around the living room for the family in +his brand-new uniform. Smeltings' boys wore maroon tailcoats, orange +knickerbockers, and flat straw hats called boaters. They also carried +knobbly sticks, used for hitting each other while the teachers weren't +looking. This was supposed to be good training for later life. + +As he looked at Dudley in his new knickerbockers, Uncle Vernon said +gruffly that it was the proudest moment of his life. Aunt Petunia burst +into tears and said she couldn't believe it was her Ickle Dudleykins, he +looked so handsome and grown-up. Harry didn't trust himself to speak. He +thought two of his ribs might already have cracked from trying not to +laugh. + +There was a horrible smell in the kitchen the next morning when Harry +went in for breakfast. It seemed to be coming from a large metal tub in +the sink. He went to have a look. The tub was full of what looked like +dirty rags swimming in gray water. + +'What's this?' he asked Aunt Petunia. Her lips tightened as they always +did if he dared to ask a question. + +'Your new school uniform,' she said. + +Harry looked in the bowl again. + +'Oh,' he said, 'I didn't realize it had to be so wet.' + +'DotA be stupid,' snapped Aunt Petunia. 'I'm dyeing some of Dudley's old +things gray for you. It'll look just like everyone else's when I've +finished.' + +Harry seriously doubted this, but thought it best not to argue. He sat +down at the table and tried not to think about how he was going to look +on his first day at Stonewall High -- like he was wearing bits of old +elephant skin, probably. + +Dudley and Uncle Vernon came in, both with wrinkled noses because of the +smell from Harry's new uniform. Uncle Vernon opened his newspaper as +usual and Dudley banged his Smelting stick, which he carried everywhere, +on the table. + +They heard the click of the mail slot and flop of letters on the +doormat. + +'Get the mail, Dudley,' said Uncle Vernon from behind his paper. + +'Make Harry get it.' + +'Get the mail, Harry.' + +'Make Dudley get it.' + +'Poke him with your Smelting stick, Dudley.' + +Harry dodged the Smelting stick and went to get the mail. Three things +lay on the doormat: a postcard from Uncle Vernon's sister Merge, who was +vacationing on the Isle of Wight, a brown envelope that looked like a +bill, and -- a letter for Harry. + +Harry picked it up and stared at it, his heart twanging like a giant +elastic band. No one, ever, in his whole life, had written to him. Who +would? He had no friends, no other relatives -- he didn't belong to the +library, so he'd never even got rude notes asking for books back. Yet +here it was, a letter, addressed so plainly there could be no mistake: + +Mr. H. Potter + +The Cupboard under the Stairs + +4 Privet Drive + +Little Whinging + +Surrey + +The envelope was thick and heavy, made of yellowish parchment, and the +address was written in emerald-green ink. There was no stamp. + +Turning the envelope over, his hand trembling, Harry saw a purple wax +seal bearing a coat of arms; a lion, an eagle, a badger, and a snake +surrounding a large letter H. + +'Hurry up, boy!' shouted Uncle Vernon from the kitchen. 'What are you +doing, checking for letter bombs?' He chuckled at his own joke. + +Harry went back to the kitchen, still staring at his letter. He handed +Uncle Vernon the bill and the postcard, sat down, and slowly began to +open the yellow envelope. + +Uncle Vernon ripped open the bill, snorted in disgust, and flipped over +the postcard. + +'Marge's ill,' he informed Aunt Petunia. 'Ate a funny whelk. --.' + +'Dad!' said Dudley suddenly. 'Dad, Harry's got something!' + +Harry was on the point of unfolding his letter, which was written on the +same heavy parchment as the envelope, when it was jerked sharply out of +his hand by Uncle Vernon. + +'That's mine!' said Harry, trying to snatch it back. + +'Who'd be writing to you?' sneered Uncle Vernon, shaking the letter open +with one hand and glancing at it. His face went from red to green faster +than a set of traffic lights. And it didn't stop there. Within seconds +it was the grayish white of old porridge. + +'P-P-Petunia!' he gasped. + +Dudley tried to grab the letter to read it, but Uncle Vernon held it +high out of his reach. Aunt Petunia took it curiously and read the first +line. For a moment it looked as though she might faint. She clutched her +throat and made a choking noise. + +'Vernon! Oh my goodness -- Vernon!' + +They stared at each other, seeming to have forgotten that Harry and +Dudley were still in the room. Dudley wasn't used to being ignored. He +gave his father a sharp tap on the head with his Smelting stick. + +'I want to read that letter,' he said loudly. want to read it,' said +Harry furiously, 'as it's mine.' + +'Get out, both of you,' croaked Uncle Vernon, stuffing the letter back +inside its envelope. + +Harry didn't move. + +I WANT MY LETTER!' he shouted. + +'Let me see it!' demanded Dudley. + +'OUT!' roared Uncle Vernon, and he took both Harry and Dudley by the +scruffs of their necks and threw them into the hall, slamming the +kitchen door behind them. Harry and Dudley promptly had a furious but +silent fight over who would listen at the keyhole; Dudley won, so Harry, +his glasses dangling from one ear, lay flat on his stomach to listen at +the crack between door and floor. + +'Vernon,' Aunt Petunia was saying in a quivering voice, 'look at the +address -- how could they possibly know where he sleeps? You don't think +they're watching the house?' + +'Watching -- spying -- might be following us,' muttered Uncle Vernon +wildly. + +'But what should we do, Vernon? Should we write back? Tell them we don't +want --' + +Harry could see Uncle Vernon's shiny black shoes pacing up and down the +kitchen. + +'No,' he said finally. 'No, we'll ignore it. If they don't get an +answer... Yes, that's best... we won't do anything.... + +'But --' + +'I'm not having one in the house, Petunia! Didn't we swear when we took +him in we'd stamp out that dangerous nonsense?' + +That evening when he got back from work, Uncle Vernon did something he'd +never done before; he visited Harry in his cupboard. + +'Where's my letter?' said Harry, the moment Uncle Vernon had squeezed +through the door. 'Who's writing to me?' + +'No one. it was addressed to you by mistake,' said Uncle Vernon shortly. +'I have burned it.' + +'It was not a mistake,' said Harry angrily, 'it had my cupboard on it.' + +'SILENCE!' yelled Uncle Vernon, and a couple of spiders fell from the +ceiling. He took a few deep breaths and then forced his face into a +smile, which looked quite painful. + +'Er -- yes, Harry -- about this cupboard. Your aunt and I have been +thinking... you're really getting a bit big for it... we think it might +be nice if you moved into Dudley's second bedroom. + +'Why?' said Harry. + +'Don't ask questions!' snapped his uncle. 'Take this stuff upstairs, +now.' + +The Dursleys' house had four bedrooms: one for Uncle Vernon and Aunt +Petunia, one for visitors (usually Uncle Vernon's sister, Merge), one +where Dudley slept, and one where Dudley kept all the toys and things +that wouldn't fit into his first bedroom. It only took Harry one trip +upstairs to move everything he owned from the cupboard to this room. He +sat down on the bed and stared around him. Nearly everything in here was +broken. The month-old video camera was lying on top of a small, working +tank Dudley had once driven over the next door neighbor's dog; in the +corner was Dudley's first-ever television set, which he'd put his foot +through when his favorite program had been canceled; there was a large +birdcage, which had once held a parrot that Dudley had swapped at school +for a real air rifle, which was up on a shelf with the end all bent +because Dudley had sat on it. Other shelves were full of books. They +were the only things in the room that looked as though they'd never been +touched. + +From downstairs came the sound of Dudley bawling at his mother, I don't +want him in there... I need that room... make him get out....' + +Harry sighed and stretched out on the bed. Yesterday he'd have given +anything to be up here. Today he'd rather be back in his cupboard with +that letter than up here without it. + +Next morning at breakfast, everyone was rather quiet. Dudley was in +shock. He'd screamed, whacked his father with his Smelting stick, been +sick on purpose, kicked his mother, and thrown his tortoise through the +greenhouse roof, and he still didn't have his room back. Harry was +thinking about this time yesterday and bitterly wishing he'd opened the +letter in the hall. Uncle Vernon and Aunt Petunia kept looking at each +other darkly. + +When the mail arrived, Uncle Vernon, who seemed to be trying to be nice +to Harry, made Dudley go and get it. They heard him banging things with +his Smelting stick all the way down the hall. Then he shouted, 'There's +another one! 'Mr. H. Potter, The Smallest Bedroom, 4 Privet Drive --'' + +With a strangled cry, Uncle Vernon leapt from his seat and ran down the +hall, Harry right behind him. Uncle Vernon had to wrestle Dudley to the +ground to get the letter from him, which was made difficult by the fact +that Harry had grabbed Uncle Vernon around the neck from behind. After a +minute of confused fighting, in which everyone got hit a lot by the +Smelting stick, Uncle Vernon straightened up, gasping for breath, with +Harry's letter clutched in his hand. + +'Go to your cupboard -- I mean, your bedroom,' he wheezed at Harry. +'Dudley -- go -- just go.' + +Harry walked round and round his new room. Someone knew he had moved out +of his cupboard and they seemed to know he hadn't received his first +letter. Surely that meant they'd try again? And this time he'd make sure +they didn't fail. He had a plan. + +The repaired alarm clock rang at six o'clock the next morning. Harry +turned it off quickly and dressed silently. He mustn't wake the +Dursleys. He stole downstairs without turning on any of the lights. + +He was going to wait for the postman on the corner of Privet Drive and +get the letters for number four first. His heart hammered as he crept +across the dark hall toward the front door -- + +Harry leapt into the air; he'd trodden on something big and squashy on +the doormat -- something alive! + +Lights clicked on upstairs and to his horror Harry realized that the +big, squashy something had been his uncle's face. Uncle Vernon had been +lying at the foot of the front door in a sleeping bag, clearly making +sure that Harry didn't do exactly what he'd been trying to do. He +shouted at Harry for about half an hour and then told him to go and make +a cup of tea. Harry shuffled miserably off into the kitchen and by the +time he got back, the mail had arrived, right into Uncle Vernon's lap. +Harry could see three letters addressed in green ink. + +I want --' he began, but Uncle Vernon was tearing the letters into +pieces before his eyes. Uncle Vernon didn't go to work that day. He +stayed at home and nailed up the mail slot. + +'See,' he explained to Aunt Petunia through a mouthful of nails, 'if +they can't deliver them they'll just give up.' + +'I'm not sure that'll work, Vernon.' + +'Oh, these people's minds work in strange ways, Petunia, they're not +like you and me,' said Uncle Vernon, trying to knock in a nail with the +piece of fruitcake Aunt Petunia had just brought him. + +On Friday, no less than twelve letters arrived for Harry. As they +couldn't go through the mail slot they had been pushed under the door, +slotted through the sides, and a few even forced through the small +window in the downstairs bathroom. + +Uncle Vernon stayed at home again. After burning all the letters, he got +out a hammer and nails and boarded up the cracks around the front and +back doors so no one could go out. He hummed 'Tiptoe Through the Tulips' +as he worked, and jumped at small noises. + +On Saturday, things began to get out of hand. Twenty-four letters to +Harry found their way into the house, rolled up and hidden inside each +of the two dozen eggs that their very confused milkman had handed Aunt +Petunia through the living room window. While Uncle Vernon made furious +telephone calls to the post office and the dairy trying to find someone +to complain to, Aunt Petunia shredded the letters in her food processor. + +'Who on earth wants to talk to you this badly?' Dudley asked Harry in +amazement. + +On Sunday morning, Uncle Vernon sat down at the breakfast table looking +tired and rather ill, but happy. + +'No post on Sundays,' he reminded them cheerfully as he spread marmalade +on his newspapers, 'no damn letters today --' + +Something came whizzing down the kitchen chimney as he spoke and caught +him sharply on the back of the head. Next moment, thirty or forty +letters came pelting out of the fireplace like bullets. The Dursleys +ducked, but Harry leapt into the air trying to catch one. + +'Out! OUT!' + +Uncle Vernon seized Harry around the waist and threw him into the hall. +When Aunt Petunia and Dudley had run out with their arms over their +faces, Uncle Vernon slammed the door shut. They could hear the letters +still streaming into the room, bouncing off the walls and floor. + +'That does it,' said Uncle Vernon, trying to speak calmly but pulling +great tufts out of his mustache at the same time. I want you all back +here in five minutes ready to leave. We're going away. Just pack some +clothes. No arguments!' + +He looked so dangerous with half his mustache missing that no one dared +argue. Ten minutes later they had wrenched their way through the +boarded-up doors and were in the car, speeding toward the highway. +Dudley was sniffling in the back seat; his father had hit him round the +head for holding them up while he tried to pack his television, VCR, and +computer in his sports bag. + +They drove. And they drove. Even Aunt Petunia didn't dare ask where they +were going. Every now and then Uncle Vernon would take a sharp turn and +drive in the opposite direction for a while. 'Shake'em off... shake 'em +off,' he would mutter whenever he did this. + +They didn't stop to eat or drink all day. By nightfall Dudley was +howling. He'd never had such a bad day in his life. He was hungry, he'd +missed five television programs he'd wanted to see, and he'd never gone +so long without blowing up an alien on his computer. + +Uncle Vernon stopped at last outside a gloomy-looking hotel on the +outskirts of a big city. Dudley and Harry shared a room with twin beds +and damp, musty sheets. Dudley snored but Harry stayed awake, sitting on +the windowsill, staring down at the lights of passing cars and +wondering.... + +They ate stale cornflakes and cold tinned tomatoes on toast for +breakfast the next day. They had just finished when the owner of the +hotel came over to their table. + +''Scuse me, but is one of you Mr. H. Potter? Only I got about an 'undred +of these at the front desk.' + +She held up a letter so they could read the green ink address: + +Mr. H. Potter + +Room 17 + +Railview Hotel + +Cokeworth + +Harry made a grab for the letter but Uncle Vernon knocked his hand out +of the way. The woman stared. + +'I'll take them,' said Uncle Vernon, standing up quickly and following +her from the dining room. + +Wouldn't it be better just to go home, dear?' Aunt Petunia suggested +timidly, hours later, but Uncle Vernon didn't seem to hear her. Exactly +what he was looking for, none of them knew. He drove them into the +middle of a forest, got out, looked around, shook his head, got back in +the car, and off they went again. The same thing happened in the middle +of a plowed field, halfway across a suspension bridge, and at the top of +a multilevel parking garage. + +'Daddy's gone mad, hasn't he?' Dudley asked Aunt Petunia dully late that +afternoon. Uncle Vernon had parked at the coast, locked them all inside +the car, and disappeared. + +It started to rain. Great drops beat on the roof of the car. Dud ley +sniveled. + +'It's Monday,' he told his mother. 'The Great Humberto's on tonight. I +want to stay somewhere with a television. ' + +Monday. This reminded Harry of something. If it was Monday -- and you +could usually count on Dudley to know the days the week, because of +television -- then tomorrow, Tuesday, was Harry's eleventh birthday. Of +course, his birthdays were never exactly fun -- last year, the Dursleys +had given him a coat hanger and a pair of Uncle Vernon's old socks. +Still, you weren't eleven every day. + +Uncle Vernon was back and he was smiling. He was also carrying a long, +thin package and didn't answer Aunt Petunia when she asked what he'd +bought. + +'Found the perfect place!' he said. 'Come on! Everyone out!' + +It was very cold outside the car. Uncle Vernon was pointing at what +looked like a large rock way out at sea. Perched on top of the rock was +the most miserable little shack you could imagine. One thing was +certain, there was no television in there. + +'Storm forecast for tonight!' said Uncle Vernon gleefully, clapping his +hands together. 'And this gentleman's kindly agreed to lend us his +boat!' + +A toothless old man came ambling up to them, pointing, with a rather +wicked grin, at an old rowboat bobbing in the iron-gray water below +them. + +'I've already got us some rations,' said Uncle Vernon, 'so all aboard!' + +It was freezing in the boat. Icy sea spray and rain crept down their +necks and a chilly wind whipped their faces. After what seemed like +hours they reached the rock, where Uncle Vernon, slipping and sliding, +led the way to the broken-down house. + +The inside was horrible; it smelled strongly of seaweed, the wind +whistled through the gaps in the wooden walls, and the fireplace was +damp and empty. There were only two rooms. + +Uncle Vernon's rations turned out to be a bag of chips each and four +bananas. He tried to start a fire but the empty chip bags just smoked +and shriveled up. + +'Could do with some of those letters now, eh?' he said cheerfully. + +He was in a very good mood. Obviously he thought nobody stood a chance +of reaching them here in a storm to deliver mail. Harry privately +agreed, though the thought didn't cheer him up at all. + +As night fell, the promised storm blew up around them. Spray from the +high waves splattered the walls of the hut and a fierce wind rattled the +filthy windows. Aunt Petunia found a few moldy blankets in the second +room and made up a bed for Dudley on the moth-eaten sofa. She and Uncle +Vernon went off to the lumpy bed next door, and Harry was left to find +the softest bit of floor he could and to curl up under the thinnest, +most ragged blanket. + +The storm raged more and more ferociously as the night went on. Harry +couldn't sleep. He shivered and turned over, trying to get comfortable, +his stomach rumbling with hunger. Dudley's snores were drowned by the +low rolls of thunder that started near midnight. The lighted dial of +Dudley's watch, which was dangling over the edge of the sofa on his fat +wrist, told Harry he'd be eleven in ten minutes' time. He lay and +watched his birthday tick nearer, wondering if the Dursleys would +remember at all, wondering where the letter writer was now. + +Five minutes to go. Harry heard something creak outside. He hoped the +roof wasn't going to fall in, although he might be warmer if it did. +Four minutes to go. Maybe the house in Privet Drive would be so full of +letters when they got back that he'd be able to steal one somehow. + +Three minutes to go. Was that the sea, slapping hard on the rock like +that? And (two minutes to go) what was that funny crunching noise? Was +the rock crumbling into the sea? + +One minute to go and he'd be eleven. Thirty seconds... twenty ... ten... +nine -- maybe he'd wake Dudley up, just to annoy him -- three... two... +one... + +BOOM. + +The whole shack shivered and Harry sat bolt upright, staring at the +door. Someone was outside, knocking to come in. + + +CHAPTER FOUR + +THE KEEPER OF THE KEYS + +BOOM. They knocked again. Dudley jerked awake. 'Where's the cannon?' he +said stupidly. + +There was a crash behind them and Uncle Vernon came skidding into the +room. He was holding a rifle in his hands -- now they knew what had been +in the long, thin package he had brought with them. + +'Who's there?' he shouted. 'I warn you -- I'm armed!' + +There was a pause. Then -- + +SMASH! + +The door was hit with such force that it swung clean off its hinges and +with a deafening crash landed flat on the floor. + +A giant of a man was standing in the doorway. His face was almost +completely hidden by a long, shaggy mane of hair and a wild, tangled +beard, but you could make out his eyes, glinting like black beetles +under all the hair. + +The giant squeezed his way into the hut, stooping so that his head just +brushed the ceiling. He bent down, picked up the door, and fitted it +easily back into its frame. The noise of the storm outside dropped a +little. He turned to look at them all. + +'Couldn't make us a cup o' tea, could yeh? It's not been an easy +journey...' + +He strode over to the sofa where Dudley sat frozen with fear. + +'Budge up, yeh great lump,' said the stranger. + +Dudley squeaked and ran to hide behind his mother, who was crouching, +terrified, behind Uncle Vernon. + +'An' here's Harry!' said the giant. + +Harry looked up into the fierce, wild, shadowy face and saw that the +beetle eyes were crinkled in a smile. + +'Las' time I saw you, you was only a baby,' said the giant. 'Yeh look a +lot like yet dad, but yeh've got yet mom's eyes.' + +Uncle Vernon made a funny rasping noise. + +I demand that you leave at once, sit!' he said. 'You are breaking and +entering!' + +'Ah, shut up, Dursley, yeh great prune,' said the giant; he reached over +the back of the sofa, jerked the gun out of Uncle Vernon's hands, bent +it into a knot as easily as if it had been made of rubber, and threw it +into a corner of the room. + +Uncle Vernon made another funny noise, like a mouse being trodden on. + +'Anyway -- Harry,' said the giant, turning his back on the Dursleys, 'a +very happy birthday to yeh. Got summat fer yeh here -- I mighta sat on +it at some point, but it'll taste all right.' + +From an inside pocket of his black overcoat he pulled a slightly +squashed box. Harry opened it with trembling fingers. Inside was a +large, sticky chocolate cake with Happy Birthday Harry written on it in +green icing. + +Harry looked up at the giant. He meant to say thank you, but the words +got lost on the way to his mouth, and what he said instead was, 'Who are +you?' + +The giant chuckled. + +'True, I haven't introduced meself. Rubeus Hagrid, Keeper of Keys and +Grounds at Hogwarts.' + +He held out an enormous hand and shook Harry's whole arm. + +'What about that tea then, eh?' he said, rubbing his hands together. +'I'd not say no ter summat stronger if yeh've got it, mind.' + +His eyes fell on the empty grate with the shriveled chip bags in it and +he snorted. He bent down over the fireplace; they couldn't see what he +was doing but when he drew back a second later, there was a roaring fire +there. It filled the whole damp hut with flickering light and Harry felt +the warmth wash over him as though he'd sunk into a hot bath. + +The giant sat back down on the sofa, which sagged under his weight, and +began taking all sorts of things out of the pockets of his coat: a +copper kettle, a squashy package of sausages, a poker, a teapot, several +chipped mugs, and a bottle of some amber liquid that he took a swig from +before starting to make tea. Soon the hut was full of the sound and +smell of sizzling sausage. Nobody said a thing while the giant was +working, but as he slid the first six fat, juicy, slightly burnt +sausages from the poker, Dudley fidgeted a little. Uncle Vernon said +sharply, 'Don't touch anything he gives you, Dudley.' + +The giant chuckled darkly. + +'Yet great puddin' of a son don' need fattenin' anymore, Dursley, don' +worry.' + +He passed the sausages to Harry, who was so hungry he had never tasted +anything so wonderful, but he still couldn't take his eyes off the +giant. Finally, as nobody seemed about to explain anything, he said, +'I'm sorry, but I still don't really know who you are.' + +The giant took a gulp of tea and wiped his mouth with the back of his +hand. + +'Call me Hagrid,' he said, 'everyone does. An' like I told yeh, I'm +Keeper of Keys at Hogwarts -- yeh'll know all about Hogwarts, o' course. + +'Er -- no,' said Harry. + +Hagrid looked shocked. + +'Sorry,' Harry said quickly. + +'Sony?' barked Hagrid, turning to stare at the Dursleys, who shrank back +into the shadows. 'It' s them as should be sorry! I knew yeh weren't +gettin' yer letters but I never thought yeh wouldn't even know abou' +Hogwarts, fer cryin' out loud! Did yeh never wonder where yet parents +learned it all?' + +'All what?' asked Harry. + +'ALL WHAT?' Hagrid thundered. 'Now wait jus' one second!' + +He had leapt to his feet. In his anger he seemed to fill the whole hut. +The Dursleys were cowering against the wall. + +'Do you mean ter tell me,' he growled at the Dursleys, 'that this boy -- +this boy! -- knows nothin' abou' -- about ANYTHING?' + +Harry thought this was going a bit far. He had been to school, after +all, and his marks weren't bad. + +'I know some things,' he said. 'I can, you know, do math and stuff.' But +Hagrid simply waved his hand and said, 'About our world, I mean. Your +world. My world. Yer parents' world.' + +'What world?' + +Hagrid looked as if he was about to explode. + +'DURSLEY!' he boomed. + +Uncle Vernon, who had gone very pale, whispered something that sounded +like 'Mimblewimble.' Hagrid stared wildly at Harry. + +'But yeh must know about yet mom and dad,' he said. 'I mean, they're +famous. You're famous.' + +'What? My -- my mom and dad weren't famous, were they?' + +'Yeh don' know... yeh don' know...' Hagrid ran his fingers through his +hair, fixing Harry with a bewildered stare. + +'Yeh don' know what yeh are?' he said finally. + +Uncle Vernon suddenly found his voice. + +'Stop!' he commanded. 'Stop right there, sit! I forbid you to tell the +boy anything!' + +A braver man than Vernon Dursley would have quailed under the furious +look Hagrid now gave him; when Hagrid spoke, his every syllable trembled +with rage. + +'You never told him? Never told him what was in the letter Dumbledore +left fer him? I was there! I saw Dumbledore leave it, Dursley! An' +you've kept it from him all these years?' + +'Kept what from me?' said Harry eagerly. + +'STOP! I FORBID YOU!' yelled Uncle Vernon in panic. + +Aunt Petunia gave a gasp of horror. + +'Ah, go boil yet heads, both of yeh,' said Hagrid. 'Harry -- yet a +wizard.' + +There was silence inside the hut. Only the sea and the whistling wind +could be heard. + +'-- a what?' gasped Harry. + +'A wizard, o' course,' said Hagrid, sitting back down on the sofa, which +groaned and sank even lower, 'an' a thumpin' good'un, I'd say, once +yeh've been trained up a bit. With a mum an' dad like yours, what else +would yeh be? An' I reckon it's abou' time yeh read yer letter.' + +Harry stretched out his hand at last to take the yellowish envelope, +addressed in emerald green to Mr. H. Potter, The Floor, Hut-on-the-Rock, +The Sea. He pulled out the letter and read: + +HOGWARTS SCHOOL of WITCHCRAFT and WIZARDRY + +Headmaster: ALBUS DUMBLEDORE + +(Order of Merlin, First Class, Grand Sorc., Chf. Warlock, Supreme +Mugwump, International Confed. of Wizards) + +Dear Mr. Potter, + +We are pleased to inform you that you have been accepted at Hogwarts +School of Witchcraft and Wizardry. Please find enclosed a list of all +necessary books and equipment. + +Term begins on September 1. We await your owl by no later than July 31. +Yours sincerely, + +Minerva McGonagall, + +Deputy Headmistress + +Questions exploded inside Harry's head like fireworks and he couldn't +decide which to ask first. After a few minutes he stammered, 'What does +it mean, they await my owl?' + +'Gallopin' Gorgons, that reminds me,' said Hagrid, clapping a hand to +his forehead with enough force to knock over a cart horse, and from yet +another pocket inside his overcoat he pulled an owl -- a real, live, +rather ruffled-looking owl -- a long quill, and a roll of parchment. +With his tongue between his teeth he scribbled a note that Harry could +read upside down: + +Dear Professor Dumbledore, + +Given Harry his letter. + +Taking him to buy his things tomorrow. + +Weather's horrible. Hope you're Well. + +Hagrid + +Hagrid rolled up the note, gave it to the owl, which clamped it in its +beak, went to the door, and threw the owl out into the storm. Then he +came back and sat down as though this was as normal as talking on the +telephone. + +Harry realized his mouth was open and closed it quickly. + +'Where was I?' said Hagrid, but at that moment, Uncle Vernon, still +ashen-faced but looking very angry, moved into the firelight. + +'He's not going,' he said. + +Hagrid grunted. + +'I'd like ter see a great Muggle like you stop him,' he said. + +'A what?' said Harry, interested. + +'A Muggle,' said Hagrid, 'it's what we call nonmagic folk like thern. +An' it's your bad luck you grew up in a family o' the biggest Muggles I +ever laid eyes on.' + +'We swore when we took him in we'd put a stop to that rubbish,' said +Uncle Vernon, 'swore we'd stamp it out of him! Wizard indeed!' + +'You knew?' said Harry. 'You knew I'm a -- a wizard?' + +'Knew!' shrieked Aunt Petunia suddenly. 'Knew! Of course we knew! How +could you not be, my dratted sister being what she was? Oh, she got a +letter just like that and disappeared off to that-that school-and came +home every vacation with her pockets full of frog spawn, turning teacups +into rats. I was the only one who saw her for what she was -- a freak! +But for my mother and father, oh no, it was Lily this and Lily that, +they were proud of having a witch in the family!' + +She stopped to draw a deep breath and then went ranting on. It seemed +she had been wanting to say all this for years. + +'Then she met that Potter at school and they left and got married and +had you, and of course I knew you'd be just the same, just as strange, +just as -- as -- abnormal -- and then, if you please, she went and got +herself blown up and we got landed with you!' + +Harry had gone very white. As soon as he found his voice he said, 'Blown +up? You told me they died in a car crash!' + +'CAR CRASH!' roared Hagrid, jumping up so angrily that the Dursleys +scuttled back to their corner. 'How could a car crash kill Lily an' +James Potter? It's an outrage! A scandal! Harry Potter not knowin' his +own story when every kid in our world knows his name!' 'But why? What +happened?' Harry asked urgently. + +The anger faded from Hagrid's face. He looked suddenly anxious. + +'I never expected this,' he said, in a low, worried voice. 'I had no +idea, when Dumbledore told me there might be trouble gettin' hold of +yeh, how much yeh didn't know. Ah, Harry, I don' know if I'm the right +person ter tell yeh -- but someone 3 s gotta -- yeh can't go off ter +Hogwarts not knowin'.' + +He threw a dirty look at the Dursleys. + +'Well, it's best yeh know as much as I can tell yeh -- mind, I can't +tell yeh everythin', it's a great myst'ry, parts of it....' + +He sat down, stared into the fire for a few seconds, and then said, 'It +begins, I suppose, with -- with a person called -- but it's incredible +yeh don't know his name, everyone in our world knows --' + +'Who? ' + +'Well -- I don' like sayin' the name if I can help it. No one does.' + +'Why not?' + +'Gulpin' gargoyles, Harry, people are still scared. Blimey, this is +difficult. See, there was this wizard who went... bad. As bad as you +could go. Worse. Worse than worse. His name was...' + +Hagrid gulped, but no words came out. + +'Could you write it down?' Harry suggested. + +'Nah -can't spell it. All right -- Voldemort. ' Hagrid shuddered. 'Don' +make me say it again. Anyway, this -- this wizard, about twenty years +ago now, started lookin' fer followers. Got 'em, too -- some were +afraid, some just wanted a bit o' his power, 'cause he was gettin' +himself power, all right. Dark days, Harry. Didn't know who ter trust, +didn't dare get friendly with strange wizards or witches... terrible +things happened. He was takin' over. 'Course, some stood up to him -- +an' he killed 'em. Horribly. One o' the only safe places left was +Hogwarts. Reckon Dumbledore's the only one You-Know-Who was afraid of. +Didn't dare try takin' the school, not jus' then, anyway. + +'Now, yer mum an' dad were as good a witch an' wizard as I ever knew. +Head boy an' girl at Hogwarts in their day! Suppose the myst'ry is why +You-Know-Who never tried to get 'em on his side before... probably knew +they were too close ter Dumbledore ter want anythin' ter do with the +Dark Side. + +'Maybe he thought he could persuade 'em... maybe he just wanted 'em +outta the way. All anyone knows is, he turned up in the village where +you was all living, on Halloween ten years ago. You was just a year old. +He came ter yer house an' -- an' --' + +Hagrid suddenly pulled out a very dirty, spotted handkerchief and blew +his nose with a sound like a foghorn. + +'Sorry,' he said. 'But it's that sad -- knew yer mum an' dad, an' nicer +people yeh couldn't find -- anyway...' + +'You-Know-Who killed 'em. An' then -- an' this is the real myst'ry of +the thing -- he tried to kill you, too. Wanted ter make a clean job of +it, I suppose, or maybe he just liked killin' by then. But he couldn't +do it. Never wondered how you got that mark on yer forehead? That was no +ordinary cut. That's what yeh get when a Powerful, evil curse touches +yeh -- took care of yer mum an' dad an' yer house, even -- but it didn't +work on you, an' that's why yer famous, Harry. No one ever lived after +he decided ter kill 'em, no one except you, an' he'd killed some o' the +best witches an' wizards of the age -- the McKinnons, the Bones, the +Prewetts -- an' you was only a baby, an' you lived.' + +Something very painful was going on in Harry's mind. As Hagrid's story +came to a close, he saw again the blinding flash of green light, more +clearly than he had ever remembered it before -- and he remembered +something else, for the first time in his life: a high, cold, cruel +laugh. + +Hagrid was watching him sadly. + +'Took yeh from the ruined house myself, on Dumbledore's orders. Brought +yeh ter this lot...' + +'Load of old tosh,' said Uncle Vernon. Harry jumped; he had almost +forgotten that the Dursleys were there. Uncle Vernon certainly seemed to +have got back his courage. He was glaring at Hagrid and his fists were +clenched. + +'Now, you listen here, boy,' he snarled, 'I accept there's something +strange about you, probably nothing a good beating wouldn't have cured +-- and as for all this about your parents, well, they were weirdos, no +denying it, and the world's better off without them in my opinion -- +asked for all they got, getting mixed up with these wizarding types -- +just what I expected, always knew they'd come to a sticky end --' + +But at that moment, Hagrid leapt from the sofa and drew a battered pink +umbrella from inside his coat. Pointing this at Uncle Vernon like a +sword, he said, 'I'm warning you, Dursley -I'm warning you -- one more +word... ' + +In danger of being speared on the end of an umbrella by a bearded giant, +Uncle Vernon's courage failed again; he flattened himself against the +wall and fell silent. + +'That's better,' said Hagrid, breathing heavily and sitting back down on +the sofa, which this time sagged right down to the floor. + +Harry, meanwhile, still had questions to ask, hundreds of them. + +'But what happened to Vol--, sorry -- I mean, You-Know-Who?' + +'Good question, Harry. Disappeared. Vanished. Same night he tried ter +kill you. Makes yeh even more famous. That's the biggest myst'ry, see... +he was gettin' more an' more powerful -- why'd he go? + +'Some say he died. Codswallop, in my opinion. Dunno if he had enough +human left in him to die. Some say he's still out there, bidin' his +time, like, but I don' believe it. People who was on his side came back +ter ours. Some of 'em came outta kinda trances. Don~ reckon they +could've done if he was comin' back. + +'Most of us reckon he's still out there somewhere but lost his powers. +Too weak to carry on. 'Cause somethin' about you finished him, Harry. +There was somethin' goin' on that night he hadn't counted on -- I dunno +what it was, no one does -- but somethin' about you stumped him, all +right.' + +Hagrid looked at Harry with warmth and respect blazing in his eyes, but +Harry, instead of feeling pleased and proud, felt quite sure there had +been a horrible mistake. A wizard? Him? How could he possibly be? He'd +spent his life being clouted by Dudley, and bullied by Aunt Petunia and +Uncle Vernon; if he was really a wizard, why hadn't they been turned +into warty toads every time they'd tried to lock him in his cupboard? If +he'd once defeated the greatest sorcerer in the world, how come Dudley +had always been able to kick him around like a football? + +'Hagrid,' he said quietly, 'I think you must have made a mistake. I +don't think I can be a wizard.' + +To his surprise, Hagrid chuckled. + +'Not a wizard, eh? Never made things happen when you was scared or +angry?' + +Harry looked into the fire. Now he came to think about it... every odd +thing that had ever made his aunt and uncle furious with him had +happened when he, Harry, had been upset or angry... chased by Dudley's +gang, he had somehow found himself out of their reach... dreading going +to school with that ridiculous haircut, he'd managed to make it grow +back... and the very last time Dudley had hit him, hadn't he got his +revenge, without even realizing he was doing it? Hadn't he set a boa +constrictor on him? + +Harry looked back at Hagrid, smiling, and saw that Hagrid was positively +beaming at him. + +'See?' said Hagrid. 'Harry Potter, not a wizard -- you wait, you'll be +right famous at Hogwarts.' + +But Uncle Vernon wasn't going to give in without a fight. + +'Haven't I told you he's not going?' he hissed. 'He's going to Stonewall +High and he'll be grateful for it. I've read those letters and he needs +all sorts of rubbish -- spell books and wands and --' + +'If he wants ter go, a great Muggle like you won't stop him,' growled +Hagrid. 'Stop Lily an' James Potter' s son goin' ter Hogwarts! Yer mad. +His name's been down ever since he was born. He's off ter the finest +school of witchcraft and wizardry in the world. Seven years there and he +won't know himself. He'll be with youngsters of his own sort, fer a +change, an' he'll be under the greatest headmaster Hogwarts ever had +Albus Dumbled--' + +'I AM NOT PAYING FOR SOME CRACKPOT OLD FOOL To TEACH HIM MAGIC TRICKS!' +yelled Uncle Vernon. + +But he had finally gone too far. Hagrid seized his umbrella and whirled +it over his head, 'NEVER,' he thundered, '- INSULT- ALBUS- DUMBLEDORE- +IN- FRONT- OF- ME!' + +He brought the umbrella swishing down through the air to point at Dudley +-- there was a flash of violet light, a sound like a firecracker, a +sharp squeal, and the next second, Dudley was dancing on the spot with +his hands clasped over his fat bottom, howling in pain. When he turned +his back on them, Harry saw a curly pig's tail poking through a hole in +his trousers. + +Uncle Vernon roared. Pulling Aunt Petunia and Dudley into the other +room, he cast one last terrified look at Hagrid and slammed the door +behind them. + +Hagrid looked down at his umbrella and stroked his beard. + +'Shouldn'ta lost me temper,' he said ruefully, 'but it didn't work +anyway. Meant ter turn him into a pig, but I suppose he was so much like +a pig anyway there wasn't much left ter do.' + +He cast a sideways look at Harry under his bushy eyebrows. + +'Be grateful if yeh didn't mention that ter anyone at Hogwarts,' he +said. 'I'm -- er -- not supposed ter do magic, strictly speakin'. I was +allowed ter do a bit ter follow yeh an' get yer letters to yeh an' stuff +-- one o' the reasons I was so keen ter take on the job + +'Why aren't you supposed to do magic?' asked Harry. + +'Oh, well -- I was at Hogwarts meself but I -- er -- got expelled, ter +tell yeh the truth. In me third year. They snapped me wand in half an' +everything. But Dumbledore let me stay on as gamekeeper. Great man, +Dumbledore.' 'Why were you expelled?' + +'It's gettin' late and we've got lots ter do tomorrow,' said Hagrid +loudly. 'Gotta get up ter town, get all yer books an' that.' + +He took off his thick black coat and threw it to Harry. + +'You can kip under that,' he said. 'Don' mind if it wriggles a bit, I +think I still got a couple o' dormice in one o' the pockets.' + + +CHAPTER FIVE + +DIAGON ALLEY + +Harry woke early the next morning. Although he could tell it was +daylight, he kept his eyes shut tight. + +'It was a dream, he told himself firmly. 'I dreamed a giant called +Hagrid came to tell me I was going to a school for wizards. When I open +my eyes I'll be at home in my cupboard.' + +There was suddenly a loud tapping noise. + +And there's Aunt Petunia knocking on the door, Harry thought, his heart +sinking. But he still didn't open his eyes. It had been such a good +dream. + +Tap. Tap. Tap. + +'All right,' Harry mumbled, 'I'm getting up.' + +He sat up and Hagrid's heavy coat fell off him. The hut was full of +sunlight, the storm was over, Hagrid himself was asleep on the collapsed +sofa, and there was an owl rapping its claw on the window, a newspaper +held in its beak. + +Harry scrambled to his feet, so happy he felt as though a large balloon +was swelling inside him. He went straight to the window and jerked it +open. The owl swooped in and dropped the newspaper on top of Hagrid, who +didn't wake up. The owl then fluttered onto the floor and began to +attack Hagrid's coat. + +'Don't do that.' + +Harry tried to wave the owl out of the way, but it snapped its beak +fiercely at him and carried on savaging the coat. + +'Hagrid!' said Harry loudly. 'There's an owl + +'Pay him,' Hagrid grunted into the sofa. + +'What?' + +'He wants payin' fer deliverin' the paper. Look in the pockets.' +Hagrid's coat seemed to be made of nothing but pockets -- bunches of +keys, slug pellets, balls of string, peppermint humbugs, teabags... +finally, Harry pulled out a handful of strange-looking coins. + +'Give him five Knuts,' said Hagrid sleepily. + +'Knuts?' + +'The little bronze ones.' + +Harry counted out five little bronze coins, and the owl held out his leg +so Harry could put the money into a small leather pouch tied to it. Then +he flew off through the open window. + +Hagrid yawned loudly, sat up, and stretched. + +'Best be Off, Harry, lots ter do today, gotta get up ter London an' buy +all yer stuff fer school.' + +Harry was turning over the wizard coins and looking at them. He had just +thought of something that made him feel as though the happy balloon +inside him had got a puncture. + +'Um -- Hagrid?' + +'Mm?' said Hagrid, who was pulling on his huge boots. + +'I haven't got any money -- and you heard Uncle Vernon last night ... he +won't pay for me to go and learn magic.' + +'Don't worry about that,' said Hagrid, standing up and scratching his +head. 'D'yeh think yer parents didn't leave yeh anything?' + +'But if their house was destroyed --' + +'They didn' keep their gold in the house, boy! Nah, first stop fer us is +Gringotts. Wizards' bank. Have a sausage, they're not bad cold -- an' I +wouldn' say no the a bit o' yer birthday cake, neither.' + +'Wizards have banks?' + +'Just the one. Gringotts. Run by goblins.' + +Harry dropped the bit of sausage he was holding. + +'Goblins?' + +'Yeah -- so yeh'd be mad ter try an' rob it, I'll tell yeh that. Never +mess with goblins, Harry. Gringotts is the safest place in the world fer +anything yeh want ter keep safe -- 'cept maybe Hogwarts. As a matter o' +fact, I gotta visit Gringotts anyway. Fer Dumbledore. Hogwarts +business.' Hagrid drew himself up proudly. 'He usually gets me ter do +important stuff fer him. Fetchin' you gettin' things from Gringotts -- +knows he can trust me, see. + +'Got everythin'? Come on, then.' + +Harry followed Hagrid out onto the rock. The sky was quite clear now and +the sea gleamed in the sunlight. The boat Uncle Vernon had hired was +still there, with a lot of water in the bottom after the storm. + +'How did you get here?' Harry asked, looking around for another boat. +'Flew,' said Hagrid. + +'Flew?' + +'Yeah -- but we'll go back in this. Not s'pposed ter use magic now I've +got yeh.' + +They settled down in the boat, Harry still staring at Hagrid, trying to +imagine him flying. + +'Seems a shame ter row, though,' said Hagrid, giving Harry another of +his sideways looks. 'If I was ter -- er -- speed things up a bit, would +yeh mind not mentionin' it at Hogwarts?' + +'Of course not,' said Harry, eager to see more magic. Hagrid pulled out +the pink umbrella again, tapped it twice on the side of the boat, and +they sped off toward land. + +'Why would you be mad to try and rob Gringotts?' Harry asked. + +'Spells -- enchantments,' said Hagrid, unfolding his newspaper as he +spoke. 'They say there's dragons guardin' the highsecurity vaults. And +then yeh gotta find yer way -- Gringotts is hundreds of miles under +London, see. Deep under the Underground. Yeh'd die of hunger tryin' ter +get out, even if yeh did manage ter get yer hands on summat.' + +Harry sat and thought about this while Hagrid read his newspaper, the +Daily Prophet. Harry had learned from Uncle Vernon that people liked to +be left alone while they did this, but it was very difficult, he'd never +had so many questions in his life. + +'Ministry o' Magic messin' things up as usual,' Hagrid muttered, turning +the page. + +'There's a Ministry of Magic?' Harry asked, before he could stop +himself. + +''Course,' said Hagrid. 'They wanted Dumbledore fer Minister, 0 ' +course, but he'd never leave Hogwarts, so old Cornelius Fudge got the +job. Bungler if ever there was one. So he pelts Dumbledore with owls +every morning, askin' fer advice.' + +'But what does a Ministry of Magic do?' + +'Well, their main job is to keep it from the Muggles that there's still +witches an' wizards up an' down the country.' + +'Why?' + +'Why? Blimey, Harry, everyone'd be wantin' magic solutions to their +problems. Nah, we're best left alone.' + +At this moment the boat bumped gently into the harbor wall. Hagrid +folded up his newspaper, and they clambered up the stone steps onto the +street. +""" + + +def main(): + args = get_args() + depth_percent = args.depth_percent + + assert args.ckpt_path.exists(), f"Checkpoint path {args.ckpt_path} does not exist" + + config = get_config_from_file((args.ckpt_path / "config.yaml").as_posix()) + model_config = config.model.model_config + tokenizer_path = config.tokenizer.tokenizer_name_or_path + + parallel_config = ParallelismArgs( + dp=args.dp or config.parallelism.dp, + pp=args.pp or config.parallelism.pp, + tp=args.tp or config.parallelism.tp, + pp_engine=OneForwardOneBackwardPipelineEngine(), + tp_mode=TensorParallelLinearMode.REDUCE_SCATTER, + tp_linear_async_communication=True, + ) + + # Initialise all process groups + parallel_context = ParallelContext( + data_parallel_size=parallel_config.dp, + pipeline_parallel_size=parallel_config.pp, + tensor_parallel_size=parallel_config.tp, + ) + + # Set log levels + logging_config = LoggingArgs( + log_level="info", + log_level_replica="info", + ) + + # Set log levels + set_ranks_logging_level(parallel_context=parallel_context, logging_config=logging_config) + + log_rank(f"model_config: {model_config}", logger=logger, level=logging.INFO, rank=0) + log_rank(f"tokenizer_path: {tokenizer_path}", logger=logger, level=logging.INFO, rank=0) + + dtype = torch.bfloat16 + + # Set random states + set_random_seed(42) + + model_config_cls = model_config.__class__.__name__ + if model_config_cls not in CONFIG_TO_MODEL_CLASS: + raise ValueError( + f"Unsupported model config {model_config_cls}. Only {CONFIG_TO_MODEL_CLASS.keys()} are supported" + ) + + # Get synchronized random states + if parallel_config.tp_mode is TensorParallelLinearMode.ALL_REDUCE: + random_states = RandomStates( + {"tp_synced": get_synced_random_state(random_state=get_current_random_state(), pg=parallel_context.tp_pg)} + ) + else: + # We don't need to sync across TP when using sequence parallel (REDUCE_SCATTER) + random_states = RandomStates({}) + + model = build_model( + model_builder=lambda: CONFIG_TO_MODEL_CLASS[model_config_cls]( + config=model_config, + parallel_context=parallel_context, + parallel_config=parallel_config, + random_states=random_states, + ), + dtype=dtype, + parallel_context=parallel_context, + ) + + # Mark some parameters as tied + # TODO @nouamane: this is only needed for training, can we just mark params as NanotronParameter instead? + mark_tied_parameters(model=model, parallel_context=parallel_context, parallel_config=parallel_config) + + # Sanity check model + sanity_check(root_module=model) + + # Load checkpoint + checkpoint_path = args.ckpt_path + log_rank( + f"Loading checkpoint from {checkpoint_path}:", + logger=logger, + level=logging.INFO, + rank=0, + ) + load_weights(model=model, parallel_context=parallel_context, root_folder=checkpoint_path) + + model.eval() + if AutoTokenizer is not None: + tokenizer = AutoTokenizer.from_pretrained(tokenizer_path) + # tokenizer.pad_token_id = tokenizer.eos_token_id + if tokenizer.pad_token_id is None: + if tokenizer.eos_token_id is not None: + tokenizer.pad_token_id = tokenizer.eos_token_id + elif getattr(model.config, "pad_token_id", None) is not None: + tokenizer.pad_token_id = int(model.config.pad_token_id) + elif getattr(model.config, "eos_token_id", None) is not None: + tokenizer.pad_token_id = int(model.config.eos_token_id) + else: + tokenizer.add_special_tokens({"pad_token": "[PAD]"}) + tokenizer.padding_side = "left" + tokenizer.truncation_side = "left" # TODO @nouamane: do we want this? + + import wandb + + if dist.get_rank() == 0: + wandb.init( + project="debug_infini_attention", + name="debug_infini_attention", + ) + + # dummy_inputs = [ + # # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", + # # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", + # # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", + # # "def fib(n)", + # # "This film was probably inspired by Godzilla", + # # END_PASSKEY, + # PASSKEY_NINETY_PERCENT, + # # FINETUNE + # ] + + # generate(args, model, tokenizer, [HARRY_POTTER], parallel_context) + + # dataset = load_dataset("nanotron/simple_needle_in_a_hay_stack", split="train") + # df = load_dataset("nanotron/simple_needle_in_a_hay_stack", split="train") + # from datasets import load_dataset + + # dataset = load_dataset("lvwerra/needle-llama3-16x512", split="train") + # df = load_dataset("lvwerra/needle-llama3-16x512", split="train") + + # dataset = load_dataset("nanotron/needle_in_a_hay_stack_eval_dataset", split="train") + # df = load_dataset("nanotron/needle_in_a_hay_stack_eval_dataset", split="train") + + # NOTE: filter out only samples with context_length is 32768 + dataset = dataset.filter(lambda x: x["context_length"] == 32768 and x["depth_percent"] == depth_percent) + df = df.filter(lambda x: x["context_length"] == 32768 and x["depth_percent"] == depth_percent) + + # # Filter and select the first 2 samples for each unique 'depth_percent' value + # dataset = dataset.group_by("depth_percent").select(keep_from_disk=True, indices=lambda group: group[:2]) + # df = df.group_by("depth_percent").select(keep_from_disk=True, indices=lambda group: group[:2]) + + # # NOTE: only take 2 sample for each unique depth_percent + # dataset = dataset.groupby('depth_percent').head(2) + # df = df.groupby('depth_percent').head(2) + + # dataset = dataset.select(range(len(dataset)-1, -1, -1)) + # df = df.select(range(len(df)-1, -1, -1)) + + # nOTE: only take 10 samples + # dataset = dataset.select(range(10)) + # df = df.select(range(10)) + + # NOTE: now reverse these dataset + + dataloader = torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False) + + df.set_format("pandas") + df = df[:] + + # for i in range(10): + # texts = [dataset["prompt"][i]] + # needle = dataset["answer"][i] + # generate(args, model, tokenizer, texts, needle, parallel_context) + + responses = [] + from tqdm import tqdm + + for batch in tqdm(dataloader): + print("--------------------------------------------------") + print(f"target answer: {batch['answer']}") + texts = batch["prompt"] + # texts = batch["haystack_text"] + # needle = batch["answer"] + from nanotron import constants + + constants.NEEDLE = batch["answer"].item() + + responses.append(generate(args, model, tokenizer, texts, parallel_context)) + + # NOTE: now flatten the responses + responses = [response for sublist in responses for response in sublist] + df["response"] = responses + # df["match"] = df.apply(lambda x: int(str(x["needle"]) in x["response"]), axis=1) + + # NOTE: move anything from gpu to cpu in df + + # nOTE: now save df + # df.to_pickle(f'needle_finetune_format_dataset_but_for_evals_{context_length}_ctx_and_{depth_percent}_depth.pkl') + + dist.barrier() + + +if __name__ == "__main__": + main() diff --git a/run_generate.py b/run_generate.py index c50dde94..642fb3c3 100644 --- a/run_generate.py +++ b/run_generate.py @@ -53,9 +53,11 @@ logger = logging.get_logger(__name__) -END_PASSKEY = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. The pass key is 5666. Remember it. 5666 is the pass key. What is the pass key? The pass key is" +END_PASSKEY_EXTACT_32K_TOKENS = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe. The pass key is 1995242. Remember it. 1995242 is the pass key. . \n\nWhat is the pass key? The pass key is " + + +END_PASSKEY_NOT_EXTACT_32K_TOKENS = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on. The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe. The pass key is 1995242. Remember it. 1995242 is the pass key. . \n\nWhat is the pass key? The pass key is " -PASSKEY_NINETY_PERCENT = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The pass key is 9918. Remember it. 9918 is the pass key. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. From coast to coast. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The mountain is high. The snow is cold. The air is thin. Upward we climb. From base to peak. The forest is dense. The trees are tall. The path is winding. Into the woods. Out and back. The river is wide. The current is strong. The banks are muddy. Down the stream. Back and forth. The ocean is vast. The waves are calming. The sand is warm. Onward we sail. What is the pass key? The pass key is" FINETUNE = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with peopleThe pass key is 1853. Remember it. 1853 is the pass key. . Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The ur What is the pass key? The pass key is" @@ -171,15 +173,13 @@ def main(): tokenizer.padding_side = "left" tokenizer.truncation_side = "left" # TODO @nouamane: do we want this? dummy_inputs = [ - # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", - # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", # "def fib(n)", # "This film was probably inspired by Godzilla", # "Paris is the capital of", - # END_PASSKEY, + END_PASSKEY_EXTACT_32K_TOKENS, # PASSKEY_NINETY_PERCENT, - "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The pass key is 2. Remember it. 2 is the pass key. What is the pass key? The pass key is ", + # "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The pass key is 1. Remember it. 1 is the pass key. What is the pass key? The pass key is ", # FINETUNE ] @@ -190,7 +190,7 @@ def main(): model=model.model, parallel_context=parallel_context, max_new_tokens=args.max_new_tokens, - max_micro_batch_size=2, + max_micro_batch_size=1, generation_config=GenerationArgs(sampler="greedy", use_cache=False), tokenizer_config=TokenizerConfig(max_input_length=None), is_bench=os.environ.get("USE_BENCH", "0") == "1", From 97d3861b5755eb124da74326a59ea1e8d045c080 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Fri, 31 May 2024 11:35:02 +0000 Subject: [PATCH 25/43] save generation --- run_generate.py | 231 ++++++++++++++++++++++++++++-- src/nanotron/generation/decode.py | 86 ++++++----- 2 files changed, 272 insertions(+), 45 deletions(-) diff --git a/run_generate.py b/run_generate.py index 642fb3c3..5d6ed4a0 100644 --- a/run_generate.py +++ b/run_generate.py @@ -61,6 +61,193 @@ FINETUNE = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with peopleThe pass key is 1853. Remember it. 1853 is the pass key. . Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The ur What is the pass key? The pass key is" +TRAINING_DATA_4K = """ +of CaterBuzz, a vibrant community where food, technology, and insect enthusiasts converge. + +First, let's get acquainted with some key players mentioned in the webpage extract: + +* Lon Lan III, RollingBee, Dianne Evans, and Vince Pavone are caterBuzz members who actively contribute to discussions about the catering industry. +* Pauline Hoogmoed and the Catersource team organize events like #cses2014, which brings professionals together to learn and share knowledge. +* Roll-e-Bee is the latest addition to the caterBuzz family, serving as both a social media mascot and source of humor. + +Now, back to entomology and apiculture. While they may seem unrelated at first glance, these fields intersect when discussing the use of insects, specifically honeybees, in culinary applications. Honeybees play a crucial role in pollinating plants and producing honey, but did you know their larvae can also be consumed? Rich in protein, iron, calcium, and essential fatty acids, bee larvae present an intriguing alternative protein source worth considering. + +The caterBuzz community embraces this idea by incorporating elements of entomophagy and apiculture into their conversations. By sharing recipes, resources, and insights related to these practices, they foster creativity and innovation among members while promoting sustainability and responsible consumption. + +Moreover, the lighthearted nature of the extract showcases another aspect of caterBuzz: its ability to engage users through entertaining content. From punny captions ("got rubber? - chef rubber girl is awesome!") to clever hashtags (#buzzie twins), the platform encourages interaction and camaraderie among participants. This unique blend of education, entertainment, and engagement makes caterBuzz stand out as a go-to destination for catering professionals looking to expand their horizons. + +In conclusion, exploring the intersection of entomology, apiculture, and social media provides us with valuable lessons about adaptability, inclusivity, and forward-thinking approaches within various industries. As consumers continue seeking novel experiences and sustainable options, communities like caterBuzz will remain vital hubs for inspiration and growth. + +So why not join the conversation? Visit caterBuzz today and discover new ways to incorporate insects and honeybees into your culinary creations. Who knows – you might even find yourself becoming an advocate for entomophagy or apiculture along the way!<|endoftext|>import numpy as np + +from ml_algorithms import utils + + +class LogisticRegression: + def __init__(self, penalty='l2', C=1, l1_ratio=0, fit_intercept=True): + self.penalty = penalty.lower() + self.C = C + self.l1_ratio = l1_ratio + self.fit_intercept = fit_intercept + self.n_features = 0 + self.n_classes = 0 + self.weights = [] + self.bias = 0 + + def _penalty_cost(self): + if self.penalty == 'l1': + return utils.l1_penalty(self.C, self.weights) + elif self.penalty == 'l2': + return utils.l2_penalty(self.C, self.weights) + elif self.penalty == 'elasticnet': + return utils.elasticnet_penalty(self.C, self.l1_ratio, self.weights) + else: + return utils.no_penalty(self.C, self.weights) + + def _penalty_gradient(self): + if self.penalty == 'l1': + return utils.l1_penalty_gradient(self.C, self.weights) + elif self.penalty == 'l2': + return utils.l2_penalty_gradient(self.C, self.weights) + elif self.penalty == 'elasticnet': + return utils.elasticnet_penalty_gradient(self.C, self.l1_ratio, self.weights) + else: + return utils.no_penalty_gradient(self.C, self.weights) + + def fit(self, X, y, epochs=100, lr=1e-3): + X = np.array(X) + y = np.array(y) + n, k = X.shape + + self.n_features = k + self.n_classes = 2 + + if self.fit_intercept: + ones = np.ones((n, 1)) + X = np.concatenate((ones, X), 1) + + training_loss = [] + training_acc = [] + + # random weight initialization + beta = np.random.randn(k) / np.sqrt(k) + + # gradient descent + for _ in range(epochs): + z = np.dot(X, beta) + a = utils.sigmoid(z) + gradient = np.dot(X.T, a - y) / n + penalty = self._penalty_gradient() + beta -= lr * (gradient + penalty) + + if self.fit_intercept: + self.bias = beta[0] + self.weights = beta[1:] + else: + self.bias = 0 + self.weights = beta + + # cross entropy + penalty loss + loss = utils.binary_cross_entropy(a, y) + self._penalty_cost() + # binary accuracy + acc = np.mean(np.around(a) == y) + + training_loss.append(loss) + training_acc.append(acc) + + return training_loss, training_acc + + def predict_proba(self, X): + return utils.sigmoid(np.dot(X, self.weights) + self.bias) + + def predict_log_proba(self, X): + return np.log(self.predict_proba(X)) + + def predict(self, X): + return np.around(self.predict_proba(X)) + + def evaluate(self, X, y): + y = np.array(y) + y_pred_prob = self.predict_proba(X) + y_pred = np.argmax(y_pred_prob, axis=1) + + # binary cross entropy + penalty loss + loss = utils.binary_cross_entropy(y_pred_prob, y) + self._penalty_cost() + # binary accuracy + acc = np.mean(y_pred == y) + + return loss, acc +<|endoftext|> Title: Unleashing the Power of Cannabis and CBD Products: A Closer Look at the Magma-sized Prize Pack + +Have you ever thought about growing marijuana? Whether you're an experienced grower or just starting, one thing's for sure - it's both exciting and challenging. With the right knowledge, resources, and a little bit of patience, cultivating cannabis can yield fantastic rewards. And speaking of rewards, let's dive into the incredible prize pack mentioned in our opening extract! This amazing collection includes products from two prominent players in the cannabis scene - WholesomeCo and UTTHC (Utah Therapeutic Healing Centers). So buckle up as we explore each item and discuss what makes them so special in today's world of cannabis and CBD products. + +First off, we have the Silver Analog Volcano Vaporizer by Storz & Bickel, proudly presented by WholesomeCo. If you're familiar with high-quality vaporizers, then chances are you've heard of this German engineering marvel. The Volcano Vaporizer has been around since 2000, consistently winning awards and impressing users with its unparalleled performance. Its unique pure convection heating system ensures even heat distribution, delivering intense flavors while preserving delicate terpenes and avoiding combustion altogether. Using the Volcano provides smooth draws filled with delicious, aromatic vapor, setting itself apart from other devices in the market. Enjoying premium flowers like WholesomeCo's Wombat Juice Flower through such technology elevates your experience to new heights. Known for providing uplifting, calming, stress-relieving, and mood-enhancing benefits, this strain embodies all things delightful about quality cannabis. It might not erupt physically, but trust us when we say that these buds burst with potential! + +Moving on to offerings from UTTHC, they provide essential tools any cannabis enthusiast would appreciate. First up is their Med Card Evaluation or Renewal Visit, allowing easy access to medical cannabis programs if needed. Telehealth services make consultations convenient and hassle-free, especially during times when visiting clinics may pose challenges. Additionally, owning a top-notch grinder is vital for consistent grinding results; fortunately, UTMMJ offers a sleek model designed specifically for herbs. No need to worry about uneven grounds messing up your rolling technique anymore! Lastly, rock some style with swaggy merchandise - receive a comfy UTMMJ t-shirt and cap to flaunt your love for medicinal plants anywhere you go. These useful items showcase support towards organizations advocating for safe and responsible use of cannabinoids. + +Combined, these extraordinary gifts total more than $800 worth of value, waiting patiently for ONE lucky person who participates in the giveaway. Make sure to follow the instructions provided carefully, subscribing to Discover Marijuana on YouTube, leaving comments, and filling out the required form. Remember, winners will be announced on August 1st, giving everyone ample opportunity to join beforehand. For full rules and regulations, head over to utmmj.org/terms. + +As discussed earlier, exploring the world of cannabis and CBD products requires patience, dedication, and curiosity. But armed with reliable sources and trusted brands, navigating becomes significantly easier. By supporting companies committed to education, innovation, and social responsibility, consumers help shape the future landscape of legalized cannabis consumption positively. Happy growing and best wishes for those entering the contest!<|endoftext|> The world of medicine is constantly evolving, and it's not just about breakthrough treatments or innovative surgical procedures. Sometimes, even something as seemingly mundane as managing office equipment can have a significant impact on healthcare providers' operations and bottom line. This is where managed print services come into play, providing solutions that help medical organizations streamline their printing processes while reducing costs and improving efficiency. + +Let's take a closer look at how Vein Clinics of America benefited from implementing managed print services by using the extract provided as our starting point. + +First, let's understand what Vein Clinics of America does - they specialize in treating various venous disorders such as varicose veins, spider veins, and leg ulcers across multiple clinics nationwide. With so many locations and employees, effective communication becomes crucial. Having reliable printing infrastructure plays an essential role in ensuring smooth internal workflows and patient care. + +Before transitioning to managed print services, Vein Clinics faced several challenges related to their printer management. These issues include relying on local dealers for copiers, having excess inventory at every clinic, and buying new replacements whenever printers malfunctioned instead of repairing them. Such practices led to unnecessary expenses and inefficiencies. + +Now imagine if similar problems existed within larger hospital systems or research institutions. Mismanagement of print resources could lead to substantial financial losses and hinder important scientific advancements due to preventable operational hurdles. + +When Vein Clinics decided to partner with a managed print provider, they gained access to more strategic and cost-effective solutions tailored specifically to their unique requirements. By recommending keeping existing assets functioning rather than replacing them prematurely, the managed print provider helped extend the lifespan of the devices and lower capital expenditures. Moreover, focusing on servicing rather than merely selling hardware allowed for quicker resolution times when issues did arise. + +Additionally, introducing a hardware assurance guarantee ensured maximum uptime, minimizing disruptions to daily activities. Finally, the flexible agreement enabled Vein Clinics to scale its printing capabilities according to changing demands seamlessly. + +The benefits experienced by Vein Clinics offer insights into how managed print services can revolutionize print management within the broader scope of medicine. Some key takeaways include: + +1. Cost savings: Managed print services help reduce overall spending through optimized device utilization, efficient consumables management, and proactive maintenance. +2. Improved productivity: Quick response times to service requests and regular updates mean less downtime and increased employee output. +3. Scalability: Flexible agreements allow healthcare providers to adjust their printing capacity based on growth trajectories or fluctuations in demand. +4. Environmental sustainability: Efficient resource allocation leads to reduced waste generation, contributing positively towards environmental goals. +5. Focus on core competencies: Outsourcing print management enables healthcare professionals to concentrate on delivering quality care without worrying about peripheral tasks. + +In conclusion, adopting managed print services offers numerous advantages beyond mere cost reduction. It allows healthcare providers to streamline their operations, enhance productivity, promote sustainability, and ultimately improve focus on patient care. Whether you're running a small chain of clinics or managing a large hospital network, embracing smart print management strategies can make a considerable difference in your organization's success.<|endoftext|> Title: The New Polymer Banknote and the Future of Cryptocurrency: Is There a Intersection? + +Hello there, savvy readers! Today we'll be discussing the recent release of the new £20 polymer banknote by the Bank of England and how it relates to the ever-evolving world of cryptocurrency and blockchain technology. So let's dive right in! + +On February 20th, 2020, the Bank of England introduced its latest addition to the British currency family - the new polymer £20 note featuring the prominent artist J.M.W Turner. While this may seem unrelated to digital currencies at first glance, it raises some fascinating questions about the future of money and transactions. Will physical cash become obsolete as more people turn towards cryptocurrencies such as Bitcoin, Ethereum, Ripple etc., or will it continue to coexist alongside them? Let us explore further! + +Firstly, what makes these new polymer notes so special? Well, they are designed to last longer than traditional paper bills while also being harder to counterfeit due to advanced security features. This could potentially extend the lifespan of physical cash, thereby slowing down the transition to fully digital finance systems. However, even with improved durability, many experts believe that cash might eventually phase out completely – but when exactly would that happen? And what implications does this have for crypto enthusiasts? + +Interestingly enough, cryptocurrencies can learn quite a bit from these new polymer notes. For instance, one common criticism against digital coins is their susceptibility to hacking and cyber theft. By incorporating cutting-edge encryption methods used in blockchain technology, virtual currencies could enhance user protection and foster greater trust among potential investors. Additionally, just like how the BoE implemented public engagement campaigns during the rollout process of the new £20 note, crypto platforms need to ensure clear communication channels to address any concerns or misconceptions held by users. + +Another point worth noting is central banks' growing interest in creating their own digital currencies. Sweden's Riksbank and China's People's Bank of China are already exploring possibilities in this area. These Central Bank Digital Currencies (CBDCs), if successful, could provide stiff competition to decentralized alternatives like Bitcoin and Ether. After all, who wouldn't prefer using a state-backed digital coin over ones plagued by volatility issues? + +However, despite CBDCs posing challenges for cryptos, they also present opportunities for collaboration. With both relying on distributed ledger technologies, merging forces could result in stronger financial networks capable of handling large volumes of transactions efficiently and securely. Imagine transferring funds across borders seamlessly without worrying about conversion rates or hidden fees! Sounds promising, doesn't it? + +In conclusion, although the launch of the new polymer £20 note may appear detached from the realm of cryptocurrencies, it serves as a reminder of how innovation drives evolution in our monetary systems. Whether you're pro-cash, pro-crypto, or somewhere in between, understanding the dynamics shaping each sphere allows us to better navigate this exciting landscape of endless possibilities. + +Remember, change is inevitable, especially in something as dynamic as currency. Embrace it, adapt to it, and keep learning because knowledge empowers us to make informed decisions about our financial futures. Until next time, stay curious and informed!<|endoftext|> Title: Navigating Student Enquiries: A Key Component of Real Estate & Investment Education + +Introduction + +As a prospective or current real estate investor, education plays a crucial role in shaping your success. One essential aspect of this learning journey involves seeking assistance to manage various student enquiries effectively. Whether it's clarifying concepts through frequently asked questions (FAQs), submitting specific queries via online forms, or connecting directly with support staff, these channels enable students to access vital resources efficiently. Let's explore how each method contributes to enhancing your understanding of real estate investment principles while fostering a sense of community among learners. + +The Power of FAQs: Harnessing Collective Wisdom + +Imagine being able to tap into the collective knowledge of fellow students who have already encountered similar challenges as you embark on your real estate investment studies. That's precisely what FAQ sections offer! These repositories contain answers to common questions posed by previous learners, allowing you to glean insights from their experiences and potentially save time searching for solutions independently. By perusing through carefully curated FAQs, you can quickly grasp key concepts related to property valuation, market trends, financing options, and risk management strategies. Moreover, regularly updated FAQs ensure that the content remains relevant and responsive to evolving industry dynamics. + +Online Enquiry Forms: Tailored Assistance at Your Fingertips + +Sometimes, your unique situation may not align perfectly with general FAQ entries. This is where customized online enquiry forms shine! By submitting a detailed description of your concern, you provide subject matter experts with sufficient context to craft targeted responses tailored specifically to your needs. As such, this approach often yields more precise and comprehensive solutions than broad searches might yield. Additionally, tracking past interactions within your account facilitates continuity in communication, enabling both parties to reference prior exchanges effortlessly. Over time, building rapport with dedicated support teams can significantly enhance your overall educational experience, particularly when navigating intricate topics like taxation implications, legal considerations, or portfolio diversification tactics. + +Phone Support: The Human Touch in Digital Learning + +Despite rapid advancements in technology, there remains no substitute for human connection—especially during challenging moments in one's academic journey. Speaking directly with a representative provides immediate reassurance, addressing any lingering doubts or concerns that haven't been adequately addressed through other channels. Furthermore, telephone conversations allow for spontaneous dialogue, prompting follow-up questions or alternative viewpoints that might otherwise go unexplored in written correspondence. While waiting times and availability may vary depending on demand, having access to expert advice during regular business hours helps maintain momentum in your studies, ultimately contributing to long-term retention and proficiency in real estate investment practices. + +ID Cards & Official Documents: Streamlined Verifications for Accreditation + +Lastly, obtaining verifiable credentials is paramount for demonstrating competence within the competitive realm of real estate investing. Securing physical or digital ID cards and certificates serves as +""" + def get_args(): parser = argparse.ArgumentParser() @@ -174,13 +361,34 @@ def main(): tokenizer.truncation_side = "left" # TODO @nouamane: do we want this? dummy_inputs = [ # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", + # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", + # "This is a math lesson. Answer the question. What is the result of 1 + 1? The result is ", + # "This is a math lesson. Answer the question. What is the result of 1 + 1? The result is ", # "def fib(n)", - # "This film was probably inspired by Godzilla", - # "Paris is the capital of", - END_PASSKEY_EXTACT_32K_TOKENS, + # "This film was probably inspired by Godzilla, ", + # "This film was probably inspired by Godzilla, ", + # "Paris is the capital of ", + # "Paris is the capital of ", + # END_PASSKEY_EXTACT_32K_TOKENS, + # END_PASSKEY_EXTACT_32K_TOKENS, # PASSKEY_NINETY_PERCENT, - # "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The pass key is 1. Remember it. 1 is the pass key. What is the pass key? The pass key is ", - # FINETUNE + # "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The pass key is 24. Remember it. 24 is the pass key. What is the pass key? The pass key is ", + # "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The pass key is 24. Remember it. 24 is the pass key. What is the pass key? The pass key is ", + # FINETUNE, + # "1234", + # "1234", + # "Hi there, I'm from the USA, my name is ", + # "Hi there, I'm from the USA, my name is ", + # NOTE: training data + # "InterruptEnumeration of all the interrupts. This enum is seldom used in application or library crates. It is present primarily for", + # "InterruptEnumeration of all the interrupts. This enum is seldom used in application or library crates. It is present primarily for", + # "If the parser encounters a syntax error, an error event value incl. a description and input position will be produced (but no JS error will be thrown) and the entire ", + # "If the parser encounters a syntax error, an error event value incl. a description and input position will be produced (but no JS error will be thrown) and the entire ", + # "This work introduces an efficient method to scale Transformer-based ", + # "This work introduces an efficient method to scale Transformer-based " + # NOTE: last training data + # "Effectively managing student enquiries lies at the heart of successful real estate and investment education. Through leveraging diverse resources such as FAQs, online enquiry ", + TRAINING_DATA_4K, ] outputs = decode_text( @@ -190,8 +398,9 @@ def main(): model=model.model, parallel_context=parallel_context, max_new_tokens=args.max_new_tokens, - max_micro_batch_size=1, - generation_config=GenerationArgs(sampler="greedy", use_cache=False), + max_micro_batch_size=2, + generation_config=GenerationArgs(sampler="top_k", use_cache=False), + # generation_config=GenerationArgs(sampler="top_p", use_cache=False), tokenizer_config=TokenizerConfig(max_input_length=None), is_bench=os.environ.get("USE_BENCH", "0") == "1", ) @@ -205,14 +414,17 @@ def main(): log_rank( # f"input: {tokenizer.decode(input_ids, clean_up_tokenization_spaces=False)[:1000]}", - f"input: {tokenizer.decode(input_ids, clean_up_tokenization_spaces=False)}", + f"""input_ids: {input_ids} \n + decoded_input: {tokenizer.decode(input_ids, clean_up_tokenization_spaces=False)} + """, logger=logger, level=logging.INFO, rank=0, ) log_rank( - f"generation: {tokenizer.decode(generated_ids[len(input_ids) :], clean_up_tokenization_spaces=False)}", + f"""generation_ids: {generated_ids[len(input_ids) :]} + decoded_generation: {tokenizer.decode(generated_ids[len(input_ids) :], clean_up_tokenization_spaces=False)}""", logger=logger, level=logging.INFO, rank=0, @@ -231,6 +443,7 @@ def main(): model=model.model, parallel_context=parallel_context, generation_config=GenerationArgs(sampler="greedy", use_cache=False), + # generation_config=GenerationArgs(sampler="top_p", use_cache=False), max_micro_batch_size=1, max_new_tokens=12, returns_logits=False, diff --git a/src/nanotron/generation/decode.py b/src/nanotron/generation/decode.py index 8e4bae94..f8caafcf 100644 --- a/src/nanotron/generation/decode.py +++ b/src/nanotron/generation/decode.py @@ -131,9 +131,55 @@ def find_sequence_positions(tensor, sequence): if dist.get_rank(parallel_context.pp_pg) == input_rank: - # tokenizer.eos_token_id = 2 - # tokenizer.bos_token_id = 1 - # tokenizer.pad_token_id = tokenizer.eos_token_id + tokenizer.eos_token_id = 2 + tokenizer.bos_token_id = 1 + tokenizer.pad_token_id = tokenizer.eos_token_id + + # encodings = tokenizer( + # [elt.text for elt in micro_batch], + # return_tensors="pt", + # return_attention_mask=True, + # padding=tokenizer_config.padding, + # max_length=tokenizer_config.max_input_length, + # truncation=tokenizer_config.truncation, + # # pad_to_multiple_of=8 + # ) + + # # encodings = tokenizer( + # # [elt.text for elt in micro_batch], + # # return_tensors="pt", + # # return_attention_mask=True, + # # padding="max_length", + # # max_length=32768, + # # truncation=False, + # # # pad_to_multiple_of=8 + # # ) + + # # TARGET_INPUT_IDS = tokenizer(["Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?"], return_tensors="pt")["input_ids"][0] + # # LENGTH = TARGET_INPUT_IDS.shape[0] + # # assert encodings["input_ids"][0].shape[0] == 32768 + # # encodings["input_ids"] = encodings["input_ids"][:, :2049] + # # encodings["attention_mask"] = encodings["attention_mask"][:, :2049] + # # encodings["input_ids"][:, 2048-LENGTH:2048] = TARGET_INPUT_IDS + + # # import math + # # seq_len = encodings["input_ids"].shape[1] + # # segment_length = 2048 + + # # n_segments = math.ceil(seq_len / segment_length) + # # segment_lengths = [segment_length] * (n_segments - 1) + [seq_len - (n_segments - 1) * segment_length] + # # xs_input_ids = torch.split(encodings["input_ids"][0], segment_lengths, dim=0) + + # # from nanotron.constants import NEEDLE + # # last_segment_text = tokenizer.decode(xs_input_ids[-1]) + # # if str(NEEDLE) in last_segment_text: + # # print(f"{NEEDLE} is in the last segment") + # # else: + # # print(f"can't find the needle {NEEDLE} in the last segment") + + # encodings["attention_mask"] = encodings.attention_mask.to(dtype=torch.bool, device="cuda") + # encodings.to("cuda") + # yield GenerationInputs(input_ids=encodings.input_ids, input_masks=encodings.attention_mask) encodings = tokenizer( [elt.text for elt in micro_batch], return_tensors="pt", @@ -144,41 +190,10 @@ def find_sequence_positions(tensor, sequence): # pad_to_multiple_of=8 ) - # encodings = tokenizer( - # [elt.text for elt in micro_batch], - # return_tensors="pt", - # return_attention_mask=True, - # padding="max_length", - # max_length=32768, - # truncation=False, - # # pad_to_multiple_of=8 - # ) - - # TARGET_INPUT_IDS = tokenizer(["Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?"], return_tensors="pt")["input_ids"][0] - # LENGTH = TARGET_INPUT_IDS.shape[0] - # assert encodings["input_ids"][0].shape[0] == 32768 - encodings["input_ids"] = encodings["input_ids"][:, :2049] - encodings["attention_mask"] = encodings["attention_mask"][:, :2049] - # encodings["input_ids"][:, 2048-LENGTH:2048] = TARGET_INPUT_IDS - - # import math - # seq_len = encodings["input_ids"].shape[1] - # segment_length = 2048 - - # n_segments = math.ceil(seq_len / segment_length) - # segment_lengths = [segment_length] * (n_segments - 1) + [seq_len - (n_segments - 1) * segment_length] - # xs_input_ids = torch.split(encodings["input_ids"][0], segment_lengths, dim=0) - - # from nanotron.constants import NEEDLE - # last_segment_text = tokenizer.decode(xs_input_ids[-1]) - # if str(NEEDLE) in last_segment_text: - # print(f"{NEEDLE} is in the last segment") - # else: - # print(f"can't find the needle {NEEDLE} in the last segment") - encodings["attention_mask"] = encodings.attention_mask.to(dtype=torch.bool, device="cuda") encodings.to("cuda") yield GenerationInputs(input_ids=encodings.input_ids, input_masks=encodings.attention_mask) + else: yield GenerationInputs( input_ids=TensorPointer(group_rank=input_rank), input_masks=TensorPointer(group_rank=input_rank) @@ -334,7 +349,6 @@ def decode_text( input_ids=batch_generated_ids, input_mask=batch_generated_mask, ) - # sharded_logits = sharded_logits.transpose(0, 1) assert 1 == 1 From 5a15f2e07d94c1a21c4dd287f1335753cc492555 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Fri, 31 May 2024 12:13:24 +0000 Subject: [PATCH 26/43] add specifying segment length, ctx length, and turn on/off memory from config --- src/nanotron/config/config.py | 7 +++ src/nanotron/constants.py | 2 + src/nanotron/models/llama.py | 107 +++++++++++++++++++--------------- 3 files changed, 68 insertions(+), 48 deletions(-) diff --git a/src/nanotron/config/config.py b/src/nanotron/config/config.py index 18a03d38..814ad0ee 100644 --- a/src/nanotron/config/config.py +++ b/src/nanotron/config/config.py @@ -297,6 +297,12 @@ def __post_init__(self): self.seed = DEFAULT_SEED +@dataclass +class InfiniAttentionArgs: + segment_length: int + turn_on_memory: bool + + @dataclass class Config: """Main configuration class""" @@ -305,6 +311,7 @@ class Config: parallelism: ParallelismArgs model: ModelArgs tokenizer: TokenizerArgs + infini_attention: InfiniAttentionArgs checkpoints: Optional[CheckpointsArgs] = None logging: Optional[LoggingArgs] = None tokens: Optional[TokensArgs] = None diff --git a/src/nanotron/constants.py b/src/nanotron/constants.py index 7ba33101..05555003 100644 --- a/src/nanotron/constants.py +++ b/src/nanotron/constants.py @@ -18,3 +18,5 @@ GLOBAL_STEP: Optional[int] = None LOG_STATE_INTERVAL = 500 CONFIG = None + +TRAINING_CONFIG = None diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 4063627a..baea8487 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -381,17 +381,17 @@ def pad_to_right(tensor, mask, new_tensor=None): # ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings # # self.n_segments = 16 -# # self.segment_lengths = config.max_position_embeddings // self.n_segments +# # self.segment_length = config.max_position_embeddings // self.n_segments # # assert config.max_position_embeddings == 32768 # # NOTE: for 1b training -# self.segment_lengths = 2048 -# # self.segment_lengths = 4096 +# self.segment_length = 2048 +# # self.segment_length = 4096 # # NOTE: for sanity 200m training # # prev 16 -# # self.segment_lengths = 256 -# # self.segment_lengths = 16 +# # self.segment_length = 256 +# # self.segment_length = 16 # device = self.o_proj.weight.device # dtype = self.o_proj.weight.dtype @@ -431,16 +431,16 @@ def pad_to_right(tensor, mask, new_tensor=None): # # segment_length = seq_len // self.n_segments # # hidden_size = hidden_states.shape[2] -# if seq_len > self.segment_lengths: -# # n_segments = seq_len // self.segment_lengths +# if seq_len > self.segment_length: +# # n_segments = seq_len // self.segment_length # # segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) # # segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) # import math -# n_segments = math.ceil(seq_len / self.segment_lengths) -# segment_lengths = [self.segment_lengths] * (n_segments - 1) + [ -# seq_len - (n_segments - 1) * self.segment_lengths +# n_segments = math.ceil(seq_len / self.segment_length) +# segment_lengths = [self.segment_length] * (n_segments - 1) + [ +# seq_len - (n_segments - 1) * self.segment_length # ] # assert sum(segment_lengths) == seq_len # # assert hidden_states.shape[0] == seq_len @@ -482,13 +482,13 @@ def pad_to_right(tensor, mask, new_tensor=None): # query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] # # # NOTE: these are the shape for non-megatron-sp -# # assert query_states.shape[0] == self.segment_lengths -# # assert local_attn_outputs.shape[1] == self.segment_lengths +# # assert query_states.shape[0] == self.segment_length +# # assert local_attn_outputs.shape[1] == self.segment_length # query_states = rearrange( # query_states, # "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", -# seq_len=self.segment_lengths, +# seq_len=self.segment_length, # n_heads=self.n_local_q_heads, # d_head=self.d_qk, # ) @@ -497,7 +497,7 @@ def pad_to_right(tensor, mask, new_tensor=None): # key_states, # "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", # # batch_size=batch_size, -# seq_len=self.segment_lengths, +# seq_len=self.segment_length, # n_heads=self.n_local_kv_heads, # d_head=self.d_qk, # ) @@ -506,7 +506,7 @@ def pad_to_right(tensor, mask, new_tensor=None): # value_states, # "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", # # batch_size=batch_size, -# seq_len=self.segment_lengths, +# seq_len=self.segment_length, # n_heads=self.n_local_kv_heads, # d_head=self.d_qk, # ) @@ -543,7 +543,7 @@ def pad_to_right(tensor, mask, new_tensor=None): # local_attn_outputs = rearrange( # local_attn_outputs, # "batch_size seq_len (n_heads d_head) -> batch_size n_heads seq_len d_head", -# seq_len=self.segment_lengths, +# seq_len=self.segment_length, # d_head=self.d_qk, # ) @@ -582,7 +582,7 @@ def pad_to_right(tensor, mask, new_tensor=None): # attention_output, "batch_size n_heads seq_len d_head -> seq_len batch_size (n_heads d_head)", # n_heads=self.n_local_q_heads, # d_head=self.d_qk, -# seq_len=self.segment_lengths, +# seq_len=self.segment_length, # ) # output = self.o_proj(attention_output) @@ -776,7 +776,7 @@ def pad_to_right(tensor, mask, new_tensor=None): # value_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head" # ) -# assert query_states_without_pe.shape[0] == self.segment_lengths +# assert query_states_without_pe.shape[0] == self.segment_length # store = self.get_local_store() # if store is not None: # Inference case @@ -1096,18 +1096,19 @@ def __init__( ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings # self.n_segments = 16 - # self.segment_lengths = config.max_position_embeddings // self.n_segments + # self.segment_length = config.max_position_embeddings // self.n_segments # assert config.max_position_embeddings == 32768 # NOTE: for 1b training - # self.segment_lengths = 2048 - # self.segment_lengths = 4096 - self.segment_lengths = 1024 # for 4096 context length + # self.segment_length = 2048 + # self.segment_length = 4096 + # self.segment_length = 1024 # for 4096 context length + self.segment_length = constants.CONFIG.infini_attention.segment_length # for 1024 context length # NOTE: for sanity 200m training # prev 16 - # self.segment_lengths = 256 - # self.segment_lengths = 16 + # self.segment_length = 256 + # self.segment_length = 16 device = self.o_proj.weight.device dtype = self.o_proj.weight.dtype @@ -1124,6 +1125,13 @@ def __init__( ), ) + log_rank( + f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", + logger=logger, + level=logging.WARNING, + rank=0, + ) + def forward( self, # hidden_states: TensorType["sharded_seq_len", "batch_size", "hidden_size"], @@ -1147,16 +1155,16 @@ def forward( # segment_length = seq_len // self.n_segments # hidden_size = hidden_states.shape[2] - if seq_len > self.segment_lengths: - # n_segments = seq_len // self.segment_lengths + if seq_len > self.segment_length: + # n_segments = seq_len // self.segment_length # segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) # segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) import math - n_segments = math.ceil(seq_len / self.segment_lengths) - segment_lengths = [self.segment_lengths] * (n_segments - 1) + [ - seq_len - (n_segments - 1) * self.segment_lengths + n_segments = math.ceil(seq_len / self.segment_length) + segment_lengths = [self.segment_length] * (n_segments - 1) + [ + seq_len - (n_segments - 1) * self.segment_length ] assert sum(segment_lengths) == seq_len # assert hidden_states.shape[0] == seq_len @@ -1198,13 +1206,13 @@ def forward( query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] # # NOTE: these are the shape for non-megatron-sp - # assert query_states.shape[0] == self.segment_lengths - # assert local_attn_outputs.shape[1] == self.segment_lengths + # assert query_states.shape[0] == self.segment_length + # assert local_attn_outputs.shape[1] == self.segment_length query_states = rearrange( query_states, "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, n_heads=self.n_local_q_heads, d_head=self.d_qk, ) @@ -1213,7 +1221,7 @@ def forward( key_states, "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", # batch_size=batch_size, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, n_heads=self.n_local_kv_heads, d_head=self.d_qk, ) @@ -1222,7 +1230,7 @@ def forward( value_states, "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", # batch_size=batch_size, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, n_heads=self.n_local_kv_heads, d_head=self.d_qk, ) @@ -1259,7 +1267,7 @@ def forward( local_attn_outputs = rearrange( local_attn_outputs, "batch_size seq_len (n_heads d_head) -> batch_size n_heads seq_len d_head", - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, d_head=self.d_qk, ) @@ -1292,14 +1300,17 @@ def forward( # rank=0, # ) - attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs + if constants.CONFIG.infini_attention.turn_on_memory is True: + attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs + else: + attention_output = local_weights * local_attn_outputs attention_output = rearrange( attention_output, "batch_size n_heads seq_len d_head -> batch_size seq_len (n_heads d_head)", n_heads=self.n_local_q_heads, d_head=self.d_qk, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, ) output = self.o_proj(attention_output) @@ -1379,7 +1390,7 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): sigma_query_states, prev_memory, "batch_size n_heads seq_len d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_len d_v", - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, # n_heads=self.n_local_kv_heads, # d_k=self.d_qk, ) @@ -1390,13 +1401,13 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size n_heads seq_len", # n_heads=self.n_local_kv_heads, # d_head=self.d_qk, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, ) denominator = rearrange( denominator, "batch_size n_heads seq_len -> batch_size n_heads seq_len 1", # n_heads=self.n_local_kv_heads, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, ) # [batch_size, n_heads, seq_len, d_v] / [batch_size, n_heads, seq_len, 1], so each d_v is divide by the normalized value @@ -1420,7 +1431,7 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat "batch_size n_heads seq_len d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_len d_v", # n_heads=self.n_local_kv_heads, # d_k=self.d_qk, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, ) denominator = einsum( sigma_key_states, @@ -1428,13 +1439,13 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat "batch_size n_heads seq_len d_k, batch_size n_heads d_k -> batch_size n_heads seq_len", # n_heads=self.n_local_kv_heads, # d_k=self.d_qk, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, ) denominator = rearrange( denominator, "batch_size n_heads seq_len -> batch_size n_heads seq_len 1", # n_heads=self.n_local_kv_heads, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, ) prev_v = numerator / denominator @@ -1448,7 +1459,7 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat reduction="sum", n_heads=self.n_local_kv_heads, d_head=self.d_qk, - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, ) memory += prev_memory if prev_memory is not None else 0 @@ -1515,23 +1526,23 @@ def forward_with_hidden_states( query_states_without_pe = rearrange( query_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, seq_len=seq_len, ) key_states_without_pe = rearrange( key_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, seq_len=seq_len, ) value_states_without_pe = rearrange( value_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_lengths, + # seq_len=self.segment_length, seq_len=seq_len, ) - # assert query_states_without_pe.shape[0] == self.segment_lengths + # assert query_states_without_pe.shape[0] == self.segment_length assert query_states_without_pe.shape[0] == seq_len store = self.get_local_store() From 6273da1192bb3d142ca5a47483389dd7be2e02d3 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Fri, 31 May 2024 12:39:48 +0000 Subject: [PATCH 27/43] support turning off memory --- src/nanotron/models/llama.py | 165 ++++++++++++++++++----------------- 1 file changed, 85 insertions(+), 80 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index baea8487..6cb501b7 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -1115,22 +1115,23 @@ def __init__( from nanotron.parallel.sharded_parameters import SplitConfig, create_sharded_parameter_from_config - balance_factors = nn.Parameter(torch.zeros(self.n_local_q_heads, device=device, dtype=dtype)) - self.balance_factors = create_sharded_parameter_from_config( - parameter=balance_factors, - pg=tp_pg, - split_config=SplitConfig( - split_dim=0, - # contiguous_chunks=(self.n_local_heads, self.n_local_heads) - ), - ) + if constants.CONFIG.infini_attention.turn_on_memory is True: + balance_factors = nn.Parameter(torch.zeros(self.n_local_q_heads, device=device, dtype=dtype)) + self.balance_factors = create_sharded_parameter_from_config( + parameter=balance_factors, + pg=tp_pg, + split_config=SplitConfig( + split_dim=0, + # contiguous_chunks=(self.n_local_heads, self.n_local_heads) + ), + ) - log_rank( - f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", - logger=logger, - level=logging.WARNING, - rank=0, - ) + log_rank( + f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", + logger=logger, + level=logging.WARNING, + rank=0, + ) def forward( self, @@ -1235,30 +1236,6 @@ def forward( d_head=self.d_qk, ) - # NOTE: because in generation, the sequence length increases - # assert query_states.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) - # assert query_states.shape == key_states.shape == value_states.shape - retrieved_memory = self._retrieve_from_memory( - query_states, prev_memory=memory, prev_normalization=normalization - ) - - # log_rank( - # f"[idx={idx}] retrieved_memory.shape = {retrieved_memory.shape}, retrieve_memory is zero? {(retrieved_memory == 0).all()}", - # logger=logger, - # level=logging.INFO, - # rank=0, - # ) - - # if memory is not None: - # log_rank( - # f"[idx={idx}] memory.shape = {memory.shape}, normalization.shape = {normalization.shape}", - # logger=logger, - # level=logging.INFO, - # rank=0, - # ) - - # retrieved_memory = retrieved_memory.detach() - # local_attn_outputs = rearrange( # local_attn_outputs, # "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", @@ -1278,32 +1255,56 @@ def forward( # rank=0, # ) - global_weights = F.sigmoid(self.balance_factors) - global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") - - local_weights = 1 - F.sigmoid(self.balance_factors) - local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") - - # assert torch.allclose(global_weights + local_weights, torch.ones_like(global_weights)) - - # log_rank( - # f"[idx={idx}] global_weights.shape = {global_weights.shape}, global_weights: {global_weights}", - # logger=logger, - # level=logging.INFO, - # rank=0, - # ) + if constants.CONFIG.infini_attention.turn_on_memory is True: + # NOTE: because in generation, the sequence length increases + # assert query_states.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) + # assert query_states.shape == key_states.shape == value_states.shape + retrieved_memory = self._retrieve_from_memory( + query_states, prev_memory=memory, prev_normalization=normalization + ) - # log_rank( - # f"[idx={idx}] local_weights.shape = {local_weights.shape}, local_weights: {local_weights}", - # logger=logger, - # level=logging.INFO, - # rank=0, - # ) + # log_rank( + # f"[idx={idx}] retrieved_memory.shape = {retrieved_memory.shape}, retrieve_memory is zero? {(retrieved_memory == 0).all()}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + + # if memory is not None: + # log_rank( + # f"[idx={idx}] memory.shape = {memory.shape}, normalization.shape = {normalization.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + + # retrieved_memory = retrieved_memory.detach() + + global_weights = F.sigmoid(self.balance_factors) + global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") + + local_weights = 1 - F.sigmoid(self.balance_factors) + local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") + + # assert torch.allclose(global_weights + local_weights, torch.ones_like(global_weights)) + + # log_rank( + # f"[idx={idx}] global_weights.shape = {global_weights.shape}, global_weights: {global_weights}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + + # log_rank( + # f"[idx={idx}] local_weights.shape = {local_weights.shape}, local_weights: {local_weights}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) - if constants.CONFIG.infini_attention.turn_on_memory is True: attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs else: - attention_output = local_weights * local_attn_outputs + attention_output = local_attn_outputs attention_output = rearrange( attention_output, @@ -1315,25 +1316,29 @@ def forward( output = self.o_proj(attention_output) - if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0: - if dist.get_rank() == 0: - logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) - logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) - logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) - - logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) - logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) - logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) - logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) - logs[f"layer_{self.layer_idx}:seg_{idx}:attention_output"] = compute_stas(attention_output) - logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) - logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) - logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) - - # assert output.shape == (segment_length, batch_size, hidden_size) - - memory, normalization = self._update_memory(memory, normalization, key_states, value_states) - # memory = prev_memory if prev_memory is not None else 0.detach() + if constants.CONFIG.infini_attention.turn_on_memory is True: + if ( + constants.GLOBAL_STEP is not None + and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0 + ): + if dist.get_rank() == 0: + logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) + logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) + logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) + + logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) + logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) + logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) + logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) + logs[f"layer_{self.layer_idx}:seg_{idx}:attention_output"] = compute_stas(attention_output) + logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) + logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) + logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) + + # assert output.shape == (segment_length, batch_size, hidden_size) + + memory, normalization = self._update_memory(memory, normalization, key_states, value_states) + # memory = prev_memory if prev_memory is not None else 0.detach() outputs.append(output) # memory, normalization = memory.detach(), normalization.detach() From 18b3ef37b507fe8cd4b3dc6079cc6b25d3b446e9 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Fri, 7 Jun 2024 08:56:51 +0000 Subject: [PATCH 28/43] fix modeling code for bs = 1 --- run_generate.py | 25 ++- src/nanotron/debug/monitor.py | 37 ++-- src/nanotron/models/llama.py | 167 ++++++++++++------ .../parallel/tensor_parallel/functional.py | 15 +- src/nanotron/trainer.py | 17 +- 5 files changed, 180 insertions(+), 81 deletions(-) diff --git a/run_generate.py b/run_generate.py index 5d6ed4a0..c25ef8bf 100644 --- a/run_generate.py +++ b/run_generate.py @@ -52,6 +52,8 @@ logger = logging.get_logger(__name__) +USE_CACHE = False + END_PASSKEY_EXTACT_32K_TOKENS = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe. The pass key is 1995242. Remember it. 1995242 is the pass key. . \n\nWhat is the pass key? The pass key is " @@ -265,6 +267,9 @@ def main(): assert args.ckpt_path.exists(), f"Checkpoint path {args.ckpt_path} does not exist" config = get_config_from_file((args.ckpt_path / "config.yaml").as_posix()) + from nanotron import constants + + constants.CONFIG = config model_config = config.model.model_config tokenizer_path = config.tokenizer.tokenizer_name_or_path @@ -273,8 +278,11 @@ def main(): pp=args.pp or config.parallelism.pp, tp=args.tp or config.parallelism.tp, pp_engine=OneForwardOneBackwardPipelineEngine(), - tp_mode=TensorParallelLinearMode.REDUCE_SCATTER, - tp_linear_async_communication=True, + # tp_mode=TensorParallelLinearMode.REDUCE_SCATTER, + # tp_linear_async_communication=True, + # # NOTE: the one from main branch + tp_mode=TensorParallelLinearMode.ALL_REDUCE, + tp_linear_async_communication=False, ) # Initialise all process groups @@ -345,6 +353,10 @@ def main(): load_weights(model=model, parallel_context=parallel_context, root_folder=checkpoint_path) model.eval() + + # from nanotron.debug.monitor import monitor_nanotron_model + # monitor_nanotron_model(model=model, parallel_context=parallel_context) + if AutoTokenizer is not None: tokenizer = AutoTokenizer.from_pretrained(tokenizer_path) # tokenizer.pad_token_id = tokenizer.eos_token_id @@ -364,6 +376,7 @@ def main(): # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", # "This is a math lesson. Answer the question. What is the result of 1 + 1? The result is ", # "This is a math lesson. Answer the question. What is the result of 1 + 1? The result is ", + "def fib(n)", # "def fib(n)", # "This film was probably inspired by Godzilla, ", # "This film was probably inspired by Godzilla, ", @@ -388,7 +401,7 @@ def main(): # "This work introduces an efficient method to scale Transformer-based " # NOTE: last training data # "Effectively managing student enquiries lies at the heart of successful real estate and investment education. Through leveraging diverse resources such as FAQs, online enquiry ", - TRAINING_DATA_4K, + # TRAINING_DATA_4K, ] outputs = decode_text( @@ -398,8 +411,8 @@ def main(): model=model.model, parallel_context=parallel_context, max_new_tokens=args.max_new_tokens, - max_micro_batch_size=2, - generation_config=GenerationArgs(sampler="top_k", use_cache=False), + max_micro_batch_size=1, + generation_config=GenerationArgs(sampler="greedy", use_cache=USE_CACHE), # generation_config=GenerationArgs(sampler="top_p", use_cache=False), tokenizer_config=TokenizerConfig(max_input_length=None), is_bench=os.environ.get("USE_BENCH", "0") == "1", @@ -442,7 +455,7 @@ def main(): input_mask=torch.ones(1, 1).to(dtype=torch.bool, device="cuda"), model=model.model, parallel_context=parallel_context, - generation_config=GenerationArgs(sampler="greedy", use_cache=False), + generation_config=GenerationArgs(sampler="greedy", use_cache=USE_CACHE), # generation_config=GenerationArgs(sampler="top_p", use_cache=False), max_micro_batch_size=1, max_new_tokens=12, diff --git a/src/nanotron/debug/monitor.py b/src/nanotron/debug/monitor.py index 184fe9fe..e9f119c7 100644 --- a/src/nanotron/debug/monitor.py +++ b/src/nanotron/debug/monitor.py @@ -1,4 +1,4 @@ -from typing import Dict, List, Tuple, Union +from typing import Dict, List, Optional, Tuple, Union import torch import torch.distributed as dist @@ -56,17 +56,6 @@ def _save_output_stats(module: nn.Module, input: torch.Tensor, output: torch.Ten if stats is not None: logs[name][param_name] = stats - # if hasattr(module, "weight") and module.weight is not None: - # stats = compute_stats(name, module.weight.data) - - # if stats is not None: - # logs[name]["weight"] = stats - - # if hasattr(module, "bias") and module.bias is not None: - # stats = compute_stats(name, module.bias) - # if stats is not None: - # logs[name]["bias"] = stats - inputs = input if isinstance(input, tuple) else (input,) outputs = output if isinstance(output, tuple) else (output,) @@ -82,13 +71,31 @@ def _save_output_stats(module: nn.Module, input: torch.Tensor, output: torch.Ten stats = compute_stats(name, inputs[0]) if stats is not None: logs[name]["input"] = stats + + dp_rank = dist.get_rank(group=parallel_context.dp_pg) + tp_rank = dist.get_rank(group=parallel_context.tp_pg) + pp_rank = dist.get_rank(group=parallel_context.pp_pg) + + def save(name, tensor): + import os + + # from nanotron.constants import + DIR = "./debug/nn_states_after_fix/acts/" + + os.makedirs(DIR, exist_ok=True) + + if dp_rank == 0: + torch.save(tensor, f"{DIR}/{name}_dp_rank_{dp_rank}_and_pp_rank_{pp_rank}_and_tp_rank_{tp_rank}.pt") + if len(outputs) > 1: for i, out in enumerate(outputs): stats = compute_stats(name, out) + save(name, out) if stats is not None: logs[name][f"output:{i}"] = stats elif len(outputs) == 1: stats = compute_stats(name, outputs[0]) + save(name, outputs[0]) if stats is not None: logs[name]["output"] = stats @@ -124,7 +131,9 @@ def _save_grad_stats(module: nn.Linear, grad_input, grad_output: torch.Tensor): return logs, handles -def monitor_nanotron_model(model: NanotronModel, parallel_context: ParallelContext): +def monitor_nanotron_model(model: NanotronModel, parallel_context: Optional[ParallelContext] = None): + assert parallel_context is not None + def get_leaf_modules(module: nn.Module) -> List[Tuple[str, nn.Module]]: """ Return all the leaf modules (modules without any child modules) in a PyTorch module. @@ -149,7 +158,7 @@ def get_leaf_modules(module: nn.Module) -> List[Tuple[str, nn.Module]]: def convert_logs_to_flat_logs( - logs: Dict[str, Dict[str, Dict[str, Union[torch.Tensor, float]]]] + logs: Dict[str, Dict[str, Dict[str, Union[torch.Tensor, float]]]], ) -> Dict[str, Union[torch.Tensor, float]]: flat_logs = {} for module_name, components in logs.items(): diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 6cb501b7..5b953b22 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -1126,14 +1126,14 @@ def __init__( ), ) - log_rank( - f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", - logger=logger, - level=logging.WARNING, - rank=0, - ) + # log_rank( + # f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", + # logger=logger, + # level=logging.WARNING, + # rank=0, + # ) - def forward( + def _forward( self, # hidden_states: TensorType["sharded_seq_len", "batch_size", "hidden_size"], hidden_states: TensorType["sharded_batch_size", "seq_len", "hidden_size"], @@ -1350,12 +1350,12 @@ def forward( outputs = torch.cat(outputs, dim=1) # concat along sequence dimension assert outputs.shape == hidden_states.shape - if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0: - if dist.get_rank() == 0: - import wandb + # if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0: + # if dist.get_rank() == 0: + # import wandb - logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) - wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) + # logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) + # wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) # sequence_masks = torch.cat(sequence_masks, dim=1) # assert sequence_masks.shape == sequence_mask.shape @@ -1472,11 +1472,11 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat return memory, normalization - def forward_with_hidden_states( + def forward( self, hidden_states, # [seq_len, batch_size, hidden_size] sequence_mask, # [batch_size, seq_len] - return_qkv_states: bool = False, + # return_qkv_states: bool = False, ): from flash_attn import bert_padding from flash_attn.flash_attn_interface import ( @@ -1484,12 +1484,16 @@ def forward_with_hidden_states( flash_attn_with_kvcache, ) - seq_len = hidden_states.shape[1] + # seq_len = hidden_states.shape[1] qkv_states = self.qkv_proj( hidden_states ) # [seq_len, batch_size, n_local_q_heads * d_qk + 2 * n_local_kv_heads * d_qk] - q_length, batch_size, _ = qkv_states.shape + + # qkv_states = qkv_states.transpose(0, 1) + # q_length, batch_size, _ = qkv_states.shape + # NOTE: this is the new splitting dimension + batch_size, q_length, _ = qkv_states.shape if self.is_gqa: query_states, key_states, value_states = torch.split( @@ -1528,27 +1532,27 @@ def forward_with_hidden_states( # value_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" # ) - query_states_without_pe = rearrange( - query_states, - "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_length, - seq_len=seq_len, - ) - key_states_without_pe = rearrange( - key_states, - "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_length, - seq_len=seq_len, - ) - value_states_without_pe = rearrange( - value_states, - "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_length, - seq_len=seq_len, - ) + # query_states_without_pe = rearrange( + # query_states, + # "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", + # # seq_len=self.segment_length, + # seq_len=seq_len, + # ) + # key_states_without_pe = rearrange( + # key_states, + # "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", + # # seq_len=self.segment_length, + # seq_len=seq_len, + # ) + # value_states_without_pe = rearrange( + # value_states, + # "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", + # # seq_len=self.segment_length, + # seq_len=seq_len, + # ) # assert query_states_without_pe.shape[0] == self.segment_length - assert query_states_without_pe.shape[0] == seq_len + # assert query_states_without_pe.shape[0] == seq_len store = self.get_local_store() if store is not None: # Inference case @@ -1756,18 +1760,19 @@ def forward_with_hidden_states( attention_output = ( attention_output.contiguous().view(batch_size, q_length, self.n_local_q_heads * self.d_v).transpose(0, 1) ) - # output = self.o_proj(attention_output) - # return {"hidden_states": output, "sequence_mask": sequence_mask} - - return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} - return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () - return_outputs["qkv_states_without_pe"] = ( - query_states_without_pe, - key_states_without_pe, - value_states_without_pe, - ) - return_outputs["attention_output"] = attention_output - return return_outputs + output = self.o_proj(attention_output) + output = output.transpose(0, 1) + return {"hidden_states": output, "sequence_mask": sequence_mask} + + # return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} + # return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () + # return_outputs["qkv_states_without_pe"] = ( + # query_states_without_pe, + # key_states_without_pe, + # value_states_without_pe, + # ) + # return_outputs["attention_output"] = attention_output + # return return_outputs class LlamaDecoderLayer(nn.Module): @@ -1809,6 +1814,13 @@ def forward( residual = hidden_states hidden_states = self.input_layernorm(hidden_states) + # log_rank( + # f"hidden_states after input_layernorm: hidden_states.shape={hidden_states.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + output = self.attn( hidden_states=hidden_states, sequence_mask=sequence_mask, @@ -1816,11 +1828,35 @@ def forward( # prev_normalization=normalization, ) hidden_states = output["hidden_states"] + + # log_rank( + # f"hidden_states after attn: hidden_states.shape={hidden_states.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + hidden_states = hidden_states + residual residual = hidden_states hidden_states = self.post_attention_layernorm(hidden_states) + + # log_rank( + # f"hidden_states after post_attention_layernorm: hidden_states.shape={hidden_states.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + hidden_states = self.mlp(hidden_states=hidden_states)["hidden_states"] + + # log_rank( + # f"hidden_states after mlp: hidden_states.shape={hidden_states.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + hidden_states = hidden_states + residual return { @@ -1960,8 +1996,20 @@ def forward_with_hidden_states( input_mask: Union[torch.Tensor, TensorPointer], # [batch_size, seq_len] ): # all tensors are optional as most ranks don't need anything from the dataloader. + # log_rank( + # f"Idxs of inputs: input_ids.shape={input_ids.shape}, input_mask.shape={input_mask.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) output = self.token_position_embeddings(input_ids=input_ids, input_mask=input_mask) + # log_rank( + # f"output['input_embeds'] of token_position_embeddings: output['input_embeds'].shape={output['input_embeds'].shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) hidden_encoder_states = { "hidden_states": output["input_embeds"], @@ -1969,13 +2017,32 @@ def forward_with_hidden_states( # "memory": None, # "normalization": None, } - for encoder_block in self.decoder: + for i, encoder_block in enumerate(self.decoder): + # log_rank( + # f"Starting transformer block {i}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) hidden_encoder_states = encoder_block(**hidden_encoder_states) hidden_states = self.final_layer_norm(input=hidden_encoder_states["hidden_states"])["hidden_states"] + # log_rank( + # f"hidden_states after final_layer_norm: hidden_states.shape={hidden_states.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) sharded_logits = self.lm_head(x=hidden_states)["logits"] + # log_rank( + # f"sharded_logits after lm_head: sharded_logits.shape={sharded_logits.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) + fp32_sharded_logits = self.cast_to_fp32(x=sharded_logits)["output"] return fp32_sharded_logits, hidden_states @@ -2142,9 +2209,9 @@ def init_model_randomly(self, config: Config): continue if "balance_factors" in param_name: - import torch.nn.init as init - init.normal_(param, mean=0.0, std=0.01) + # init.normal_(param, mean=0.0, std=0.01) + param.zero_() else: module = model.get_submodule(module_name) parametrizator.parametrize(param_name, module) diff --git a/src/nanotron/parallel/tensor_parallel/functional.py b/src/nanotron/parallel/tensor_parallel/functional.py index fdef48ac..a951c588 100644 --- a/src/nanotron/parallel/tensor_parallel/functional.py +++ b/src/nanotron/parallel/tensor_parallel/functional.py @@ -19,6 +19,8 @@ from torch.nn import functional as F import nanotron.distributed as dist +from nanotron import logging +from nanotron.logging import log_rank from nanotron.parallel.tensor_parallel.distributed_differentiable_primitives import ( differentiable_all_gather, differentiable_all_reduce_sum, @@ -28,6 +30,8 @@ from nanotron.parallel.tensor_parallel.enum import TensorParallelLinearMode from nanotron.parallel.utils import assert_cuda_max_connections_set_to_1 +logger = logging.get_logger(__name__) + class _ShardedCrossEntropy(torch.autograd.Function): @staticmethod @@ -37,6 +41,13 @@ def forward( target, # (batch_size, length) group: dist.ProcessGroup, ): + log_rank( + f"sharded_logits input of _ShardedCrossEntropy: sharded_logits.shape={sharded_logits.shape}", + logger=logger, + level=logging.INFO, + rank=0, + ) + # Maximum value along last dimension across all GPUs. logits_max = torch.max(sharded_logits, dim=-1)[0] dist.all_reduce(logits_max, op=dist.ReduceOp.MAX, group=group) @@ -89,10 +100,10 @@ def forward( @staticmethod def backward(ctx, grad_output): - # Retreive tensors from the forward path. + # Retrieve tensors from the forward path. softmax, target_mask, masked_target_1d = ctx.saved_tensors - # All the inputs have softmax as thier gradient. + # All the inputs have softmax as their gradient. grad_input = softmax # For simplicity, work with the 2D gradient. sharded_hidden_size = softmax.size()[-1] diff --git a/src/nanotron/trainer.py b/src/nanotron/trainer.py index e6b26534..27ed32ed 100644 --- a/src/nanotron/trainer.py +++ b/src/nanotron/trainer.py @@ -36,7 +36,6 @@ ) from nanotron.constants import LR_SCHEDULER_CKP_PATH, METADATA_CKP_PATH, OPTIMIZER_CKP_PATH from nanotron.dataloader import sanity_check_dataloader -from nanotron.debug.monitor import monitor_nanotron_model from nanotron.helpers import ( _vocab_size_with_padding, get_profiler, @@ -436,8 +435,8 @@ def train( if isinstance(prof, torch.profiler.profile): prof.step() - if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: - nn_logs, nn_handles = monitor_nanotron_model(self.model, self.parallel_context) + # if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: + # nn_logs, nn_handles = monitor_nanotron_model(self.model, self.parallel_context) self.iteration_start_time = time.time() self._update_dataloader_based_on_training_stages(dataloader_or_dls) @@ -451,14 +450,14 @@ def train( if (self.iteration_step - 1) % self.config.logging.iteration_step_info_interval == 0: self.train_step_logs(outputs=outputs, loss_avg=loss_avg) - if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: - from nanotron.debug.monitor import convert_logs_to_flat_logs + # if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: + # from nanotron.debug.monitor import convert_logs_to_flat_logs - if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: - wandb.log({**convert_logs_to_flat_logs(nn_logs), "iteration_step": self.iteration_step}) + # if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: + # wandb.log({**convert_logs_to_flat_logs(nn_logs), "iteration_step": self.iteration_step}) - for handle in nn_handles: - handle.remove() + # for handle in nn_handles: + # handle.remove() # Checkpoint if self.iteration_step % self.config.checkpoints.checkpoint_interval == 0: From 692b052bc6c5ce5a789753479c81b00d62168b00 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 11 Jun 2024 08:36:09 +0000 Subject: [PATCH 29/43] fix wrong interdimate activations after splitting qkv with bs > 1 --- src/nanotron/models/llama.py | 761 +----------------- .../parallel/tensor_parallel/functional.py | 14 + 2 files changed, 58 insertions(+), 717 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 5b953b22..e923d66d 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -283,720 +283,6 @@ def pad_to_right(tensor, mask, new_tensor=None): from einops import einsum, rearrange, reduce from torchtyping import TensorType -# class CausalSelfAttention(nn.Module, AttachableStore): -# def __init__( -# self, -# config: LlamaConfig, -# parallel_config: Optional[ParallelismArgs], -# tp_pg: dist.ProcessGroup, -# layer_idx: int, -# ): -# from flash_attn.layers.rotary import RotaryEmbedding as FlashRotaryEmbedding - -# super().__init__() -# # Tensor parallel considerations: We split tensors along head dimension -# assert ( -# config.num_attention_heads % tp_pg.size() == 0 -# ), f"Number of attention heads ({config.num_attention_heads}) must be divisible by TP size ({tp_pg.size()})." -# try: -# assert ( -# config.num_key_value_heads % tp_pg.size() == 0 -# ), f"Number of key/value heads ({config.num_key_value_heads}) must be divisible by TP size ({tp_pg.size()})." -# except AttributeError: -# log_rank( -# "WARNING: num_key_value_heads not defined, assuming it is equal to num_attention_heads", -# logger=logger, -# level=logging.WARNING, -# rank=0, -# ) -# # If num_key_value_heads is not defined, we assume that it is equal to num_attention_heads -# config.num_key_value_heads = config.num_attention_heads -# assert ( -# config.num_attention_heads % config.num_key_value_heads == 0 -# ), f"Number of attention heads ({config.num_attention_heads}) must be divisible by number of key/value heads ({config.num_key_value_heads})." -# self.n_local_q_heads = config.num_attention_heads // tp_pg.size() -# self.n_local_kv_heads = config.num_key_value_heads // tp_pg.size() -# self.n_repeats = config.num_attention_heads // config.num_key_value_heads -# self.is_gqa = config.num_attention_heads != config.num_key_value_heads # Whether we are using GQA or not -# self.d_qk = config.hidden_size // config.num_attention_heads -# self.d_v = config.hidden_size // config.num_attention_heads -# self.d_model = config.hidden_size -# self.is_using_mup = config.is_using_mup - -# # TODO @thomasw21: refactor so that we store that default in a single place. -# tp_mode = parallel_config.tp_mode if parallel_config is not None else TensorParallelLinearMode.ALL_REDUCE -# tp_linear_async_communication = ( -# parallel_config.tp_linear_async_communication if parallel_config is not None else False -# ) - -# # build the slice config for self.qkv for save/load -# # shard are done within the contiguous chunk -# qkv_contiguous_chunks = ( -# config.num_attention_heads * self.d_qk, # shape of q -# config.num_key_value_heads * self.d_qk, # shape of k -# config.num_key_value_heads * self.d_qk, # shape of v -# ) -# self.config = config -# self.qkv_proj = TensorParallelColumnLinear( -# self.d_model, -# config.num_attention_heads * self.d_qk + 2 * config.num_key_value_heads * self.d_qk, -# pg=tp_pg, -# mode=tp_mode, -# bias=False, -# async_communication=tp_linear_async_communication, -# contiguous_chunks=qkv_contiguous_chunks, -# ) -# # TODO(kunhao): We want to have only one version per device and not one version per layer. -# self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings) -# log_rank( -# f"self.rotary_embedding.end is {self.rotary_embedding.end}", -# logger=logger, -# level=logging.INFO, -# rank=0, -# ) -# # self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=2048) - -# # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) -# self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) - -# self.o_proj = TensorParallelRowLinear( -# config.num_attention_heads * self.d_qk, -# self.d_model, -# pg=tp_pg, -# mode=tp_mode, -# bias=False, -# async_communication=tp_linear_async_communication, -# ) - -# self.attention = CoreAttention( -# config, -# parallel_config=parallel_config, -# layer_idx=layer_idx, -# ) -# self.layer_idx = layer_idx - -# self.prefill_kv_len = ( -# config.max_position_embeddings -# # 2048 -# ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings - -# # self.n_segments = 16 -# # self.segment_length = config.max_position_embeddings // self.n_segments -# # assert config.max_position_embeddings == 32768 - -# # NOTE: for 1b training -# self.segment_length = 2048 -# # self.segment_length = 4096 - -# # NOTE: for sanity 200m training -# # prev 16 -# # self.segment_length = 256 -# # self.segment_length = 16 - -# device = self.o_proj.weight.device -# dtype = self.o_proj.weight.dtype - -# from nanotron.parallel.sharded_parameters import SplitConfig, create_sharded_parameter_from_config - -# balance_factors = nn.Parameter(torch.zeros(self.n_local_q_heads, device=device, dtype=dtype)) -# self.balance_factors = create_sharded_parameter_from_config( -# parameter=balance_factors, -# pg=tp_pg, -# split_config=SplitConfig( -# split_dim=0, -# # contiguous_chunks=(self.n_local_heads, self.n_local_heads) -# ), -# ) - -# def forward( -# self, -# # hidden_states: TensorType["sharded_seq_len", "batch_size", "hidden_size"], -# hidden_states: TensorType["sharded_batch_size", "seq_len", "hidden_size"], -# sequence_mask: TensorType["batch_size", "seq_len"], -# ): -# # if self.layer_idx == 4: -# # assert 1 == 1 - -# # batch_size = hidden_states.shape[1] -# # seq_len = hidden_states.shape[0] - -# batch_size = hidden_states.shape[0] -# seq_len = hidden_states.shape[1] - -# # assert seq_len == 1024 -# # assert seq_len == 32768 - -# # assert seq_len % self.n_segments == 0 - -# # segment_length = seq_len // self.n_segments -# # hidden_size = hidden_states.shape[2] - -# if seq_len > self.segment_length: -# # n_segments = seq_len // self.segment_length -# # segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) -# # segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) - -# import math - -# n_segments = math.ceil(seq_len / self.segment_length) -# segment_lengths = [self.segment_length] * (n_segments - 1) + [ -# seq_len - (n_segments - 1) * self.segment_length -# ] -# assert sum(segment_lengths) == seq_len -# # assert hidden_states.shape[0] == seq_len -# assert hidden_states.shape[1] == seq_len -# # segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=0) -# segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=1) -# # NOTE: assume that mask are all the same -# # because we split across sequence length -# # NOTE: take the assumption that all the masks are the same -# assert torch.all(sequence_mask) -# segment_sequence_masks = torch.split(sequence_mask[:, :seq_len], segment_lengths, dim=1) -# else: -# segment_hidden_states = [hidden_states] -# segment_sequence_masks = [sequence_mask] - -# memory = None -# normalization = None - -# # memory = prev_memory -# # normalization = prev_normalization - -# outputs = [] - -# # sequence_masks = [] -# idx = 0 -# logs = {} - -# for segment_hidden_state, segment_sequence_mask in zip(segment_hidden_states, segment_sequence_masks): -# # if idx == 1: -# # memory = None -# # normalization = None - -# attn_outputs = self.forward_with_hidden_states( -# hidden_states=segment_hidden_state, sequence_mask=segment_sequence_mask, return_qkv_states=True -# ) - -# local_attn_outputs = attn_outputs["attention_output"] -# # query_states, key_states, value_states = attn_outputs["qkv_states"] -# query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] - -# # # NOTE: these are the shape for non-megatron-sp -# # assert query_states.shape[0] == self.segment_length -# # assert local_attn_outputs.shape[1] == self.segment_length - -# query_states = rearrange( -# query_states, -# "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", -# seq_len=self.segment_length, -# n_heads=self.n_local_q_heads, -# d_head=self.d_qk, -# ) - -# key_states = rearrange( -# key_states, -# "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", -# # batch_size=batch_size, -# seq_len=self.segment_length, -# n_heads=self.n_local_kv_heads, -# d_head=self.d_qk, -# ) - -# value_states = rearrange( -# value_states, -# "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", -# # batch_size=batch_size, -# seq_len=self.segment_length, -# n_heads=self.n_local_kv_heads, -# d_head=self.d_qk, -# ) - -# # NOTE: because in generation, the sequence length increases -# # assert query_states.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) -# # assert query_states.shape == key_states.shape == value_states.shape -# retrieved_memory = self._retrieve_from_memory( -# query_states, prev_memory=memory, prev_normalization=normalization -# ) - -# # log_rank( -# # f"[idx={idx}] retrieved_memory.shape = {retrieved_memory.shape}, retrieve_memory is zero? {(retrieved_memory == 0).all()}", -# # logger=logger, -# # level=logging.INFO, -# # rank=0, -# # ) - -# # if memory is not None: -# # log_rank( -# # f"[idx={idx}] memory.shape = {memory.shape}, normalization.shape = {normalization.shape}", -# # logger=logger, -# # level=logging.INFO, -# # rank=0, -# # ) - -# # retrieved_memory = retrieved_memory.detach() - -# # local_attn_outputs = rearrange( -# # local_attn_outputs, -# # "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", -# # d_head=self.d_qk, -# # ) -# local_attn_outputs = rearrange( -# local_attn_outputs, -# "batch_size seq_len (n_heads d_head) -> batch_size n_heads seq_len d_head", -# seq_len=self.segment_length, -# d_head=self.d_qk, -# ) - -# # log_rank( -# # f"[idx={idx}] local_attn_outputs.shape = {local_attn_outputs.shape}, local_attn_outputs is zero? {(local_attn_outputs == 0).all()}", -# # logger=logger, -# # level=logging.INFO, -# # rank=0, -# # ) - -# global_weights = F.sigmoid(self.balance_factors) -# global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") - -# local_weights = 1 - F.sigmoid(self.balance_factors) -# local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") - -# # assert torch.allclose(global_weights + local_weights, torch.ones_like(global_weights)) - -# # log_rank( -# # f"[idx={idx}] global_weights.shape = {global_weights.shape}, global_weights: {global_weights}", -# # logger=logger, -# # level=logging.INFO, -# # rank=0, -# # ) - -# # log_rank( -# # f"[idx={idx}] local_weights.shape = {local_weights.shape}, local_weights: {local_weights}", -# # logger=logger, -# # level=logging.INFO, -# # rank=0, -# # ) - -# attention_output = global_weights * retrieved_memory + local_weights * local_attn_outputs - -# attention_output = rearrange( -# attention_output, "batch_size n_heads seq_len d_head -> seq_len batch_size (n_heads d_head)", -# n_heads=self.n_local_q_heads, -# d_head=self.d_qk, -# seq_len=self.segment_length, -# ) - -# output = self.o_proj(attention_output) - -# if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % 50 == 0: -# if dist.get_rank() == 0: -# logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) -# logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) -# logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) - -# logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) -# logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) -# logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) -# logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) -# logs[f"layer_{self.layer_idx}:seg_{idx}:attention_output"] = compute_stas(attention_output) -# logs[f"layer_{self.layer_idx}:seg_{idx}:output"] = compute_stas(output) -# logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) -# logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) - -# # assert output.shape == (segment_length, batch_size, hidden_size) - -# memory, normalization = self._update_memory(memory, normalization, key_states, value_states) -# # memory = prev_memory if prev_memory is not None else 0.detach() - -# outputs.append(output) -# # memory, normalization = memory.detach(), normalization.detach() - -# idx += 1 - -# # NOTE: update memory -# # outputs = torch.cat(outputs, dim=0) # concat along sequence dimension -# outputs = torch.cat(outputs, dim=2) # concat along sequence dimension -# assert outputs.shape == hidden_states.shape - -# if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % 50 == 0: -# if dist.get_rank() == 0: -# import wandb - -# logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) -# wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) - -# # sequence_masks = torch.cat(sequence_masks, dim=1) -# # assert sequence_masks.shape == sequence_mask.shape -# return_outputs = { -# "hidden_states": outputs, -# "sequence_mask": sequence_mask, -# # "memory": memory, -# # "normalization": normalization, -# } -# return return_outputs - -# def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): -# # return torch.zeros_like(query_states) -# if prev_memory is None or prev_normalization is None: -# return torch.zeros_like(query_states) - -# assert (prev_memory is None and prev_normalization is None) or ( -# prev_memory is not None and prev_normalization is not None -# ) - -# if self.n_repeats > 1: -# from einops import repeat - -# prev_memory = repeat( -# prev_memory, -# "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", -# n=self.n_repeats, -# ) -# prev_normalization = repeat( -# prev_normalization, -# "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", -# n=self.n_repeats, -# ) - -# sigma_query_states = F.elu(query_states) + 1 -# retrieved_memory = einsum( -# sigma_query_states, -# prev_memory, -# "batch_size n_heads seq_len d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_len d_v", -# ) - -# denominator = einsum( -# sigma_query_states, -# prev_normalization, -# "batch_size n_heads seq_len d_head, batch_size n_heads d_head -> batch_size n_heads seq_len", -# ) -# denominator = rearrange(denominator, "batch_size n_heads seq_len -> batch_size n_heads seq_len 1") -# # [batch_size, n_heads, seq_len, d_v] / [batch_size, n_heads, seq_len, 1], so each d_v is divide by the normalized value - -# # NOTE: because normalization is the sum of all the keys, so each word should have the same normalization -# retrieved_memory = retrieved_memory / denominator -# return retrieved_memory - -# def _update_memory(self, prev_memory, prev_normalization, key_states, value_states): -# assert (prev_memory is None and prev_normalization is None) or ( -# prev_memory is not None and prev_normalization is not None -# ) - -# sigma_key_states = F.elu(key_states) + 1 - -# if prev_memory is None or prev_normalization is None: -# new_value_states = value_states -# else: -# numerator = einsum( -# sigma_key_states, -# prev_memory, -# "batch_size n_heads seq_len d_k, batch_size n_heads d_k d_v -> batch_size n_heads seq_len d_v", -# ) -# denominator = einsum( -# sigma_key_states, -# prev_normalization, -# "batch_size n_heads seq_len d_k, batch_size n_heads d_k -> batch_size n_heads seq_len", -# ) -# denominator = rearrange(denominator, "batch_size n_heads seq_len -> batch_size n_heads seq_len 1") - -# prev_v = numerator / denominator -# new_value_states = value_states - prev_v - -# memory = torch.matmul(sigma_key_states.transpose(-2, -1), new_value_states) - -# normalization = reduce( -# sigma_key_states, "batch_size n_heads seq_len d_head -> batch_size n_heads d_head", reduction="sum" -# ) - -# memory += prev_memory if prev_memory is not None else 0 -# normalization += prev_normalization if prev_normalization is not None else 0 - -# return memory, normalization - -# def forward_with_hidden_states( -# self, -# hidden_states, # [seq_len, batch_size, hidden_size] -# sequence_mask, # [batch_size, seq_len] -# return_qkv_states: bool = False, -# ): -# from flash_attn import bert_padding -# from flash_attn.flash_attn_interface import ( -# flash_attn_varlen_func, -# flash_attn_with_kvcache, -# ) - -# qkv_states = self.qkv_proj( -# hidden_states -# ) # [seq_len, batch_size, n_local_q_heads * d_qk + 2 * n_local_kv_heads * d_qk] -# q_length, batch_size, _ = qkv_states.shape - -# if self.is_gqa: -# query_states, key_states, value_states = torch.split( -# qkv_states, -# [ -# self.n_local_q_heads * self.d_qk, -# self.n_local_kv_heads * self.d_qk, -# self.n_local_kv_heads * self.d_qk, -# ], -# dim=-1, -# ) - -# query_states = ( -# query_states.transpose(0, 1).contiguous().view(batch_size, q_length, self.n_local_q_heads, self.d_qk) -# ) -# key_states = ( -# key_states.transpose(0, 1).contiguous().view(batch_size, q_length, self.n_local_kv_heads, self.d_qk) -# ) -# value_states = ( -# value_states.transpose(0, 1).contiguous().view(batch_size, q_length, self.n_local_kv_heads, self.d_qk) -# ) -# else: -# query_states, key_states, value_states = ( -# qkv_states.view(q_length, batch_size, 3, self.n_local_q_heads, self.d_qk) -# .permute(2, 1, 0, 3, 4) -# .contiguous() -# ) # [3, batch_size, seq_len, n_local_q_heads, d_qk] - -# # query_states_without_pe = rearrange( -# # query_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" -# # ) -# # key_states_without_pe = rearrange( -# # key_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" -# # ) -# # value_states_without_pe = rearrange( -# # value_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" -# # ) - -# query_states_without_pe = rearrange( -# query_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head" -# ) -# key_states_without_pe = rearrange( -# key_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head" -# ) -# value_states_without_pe = rearrange( -# value_states, "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head" -# ) - -# assert query_states_without_pe.shape[0] == self.segment_length - -# store = self.get_local_store() -# if store is not None: # Inference case -# # Double check that we use store only at inference time -# assert key_states.requires_grad is False -# assert value_states.requires_grad is False -# if "position_offsets" in store: -# old_position_offsets = store["position_offsets"] -# position_ids = old_position_offsets[:, None] + sequence_mask -# else: -# position_ids = torch.cumsum(sequence_mask, dim=-1, dtype=torch.int32) - 1 -# position_offsets = position_ids[:, -1] - -# # Compute rotary embeddings -# # Note: keep track of old rotary embedding end to check if we need to enlarge k_cache and v_cache -# old_rotary_embed_end = self.rotary_embedding.end -# query_states = self.rotary_embedding(query_states, position_ids=position_ids) -# key_states = self.rotary_embedding(key_states, position_ids=position_ids) - -# if "key" not in store: -# # First inference iteration (Prefill) -# # TODO @nouamane: support custom masking -# # assert that [ False, False, False, False, True, True, True, True, True, True] is accepted -# # but [ False, False, False, False, True, True, False, False, True, True] is not (can't mask in the middle of sequence) -# assert ~( -# sequence_mask[:, :-1] & (~sequence_mask[:, 1:]) # True is never followed by False -# ).any(), "Can't mask in the middle of sequence, please make sure that pads are at the left of the sequence if existing" - -# # preallocate k_cache, v_cache to self.prefill_kv_len -# k_cache = torch.zeros( -# ( -# batch_size, -# self.prefill_kv_len, -# self.n_local_kv_heads, -# self.d_qk, -# ), -# dtype=query_states.dtype, -# device=query_states.device, -# ) -# v_cache = torch.zeros( -# (batch_size, self.prefill_kv_len, self.n_local_kv_heads, self.d_v), -# dtype=query_states.dtype, -# device=query_states.device, -# ) -# # Remove pad tokens from key_states and concatenate samples in key_unpad -# # cu_seqlens_k is the cumulative sequence lengths of key_states -# (query_unpad, indices_q, cu_seqlens_q, max_seqlen_q) = bert_padding.unpad_input( -# query_states, -# sequence_mask, -# ) -# (key_unpad, indices_k, cu_seqlens_k, max_seqlen_k) = bert_padding.unpad_input( -# key_states, sequence_mask -# ) -# (value_unpad, _, _, _) = bert_padding.unpad_input(value_states, sequence_mask) - -# # NOTE: this scale is for µTransfer, -# # in SP, we use sqrt(1/d_h) -# softmax_scale = 1 / query_states.shape[-1] if self.is_using_mup else None -# output_unpad = flash_attn_varlen_func( -# q=query_unpad, # (total_q, n_local_q_heads, d_qk) -# k=key_unpad, # (total_kv, n_local_kv_heads, d_qk) -# v=value_unpad, # (total_kv, n_local_kv_heads, d_v) -# cu_seqlens_q=cu_seqlens_q, -# cu_seqlens_k=cu_seqlens_k, -# max_seqlen_q=max_seqlen_q, -# max_seqlen_k=max_seqlen_k, -# dropout_p=0.0, -# softmax_scale=softmax_scale, -# causal=True, # True in prefill phase, False in subsequent phases -# return_attn_probs=False, -# ) # (total_unpadded, n_local_q_heads, d_v) - -# attention_output = bert_padding.pad_input( -# output_unpad, indices_q, batch_size, q_length -# ) # (batch_size, q_length, n_local_q_heads, d_v) - -# pad_to_right(key_states, sequence_mask, new_tensor=k_cache) -# pad_to_right(value_states, sequence_mask, new_tensor=v_cache) - -# else: -# # Pull pre-computed key/value states -# # Subsequent inference iterations (q_length=1) -# k_cache = store["key"] -# v_cache = store["value"] - -# # NOTE(fmom): According to flash_attn_with_kvcache, "If you pass in k / v, you must make sure that the cache is large enough to hold the new values" -# # Since rotary embedding has changed (to enable larger context), we need to enlarge k_cache and v_cache -# if self.rotary_embedding.end > old_rotary_embed_end: -# k_cache = torch.cat( -# [ -# k_cache, -# torch.zeros( -# ( -# batch_size, -# self.rotary_embedding.end - old_rotary_embed_end, -# self.n_local_kv_heads, -# self.d_qk, -# ), -# dtype=query_states.dtype, -# device=query_states.device, -# ), -# ], -# dim=1, -# ) - -# v_cache = torch.cat( -# [ -# v_cache, -# torch.zeros( -# ( -# batch_size, -# self.rotary_embedding.end - old_rotary_embed_end, -# self.n_local_kv_heads, -# self.d_v, -# ), -# dtype=query_states.dtype, -# device=query_states.device, -# ), -# ], -# dim=1, -# ) - -# assert ( -# k_cache.shape[1] == self.rotary_embedding.end -# ), f"Cache size {k_cache.shape[1]} is smaller than rotary embedding end {self.rotary_embedding.end}" -# assert ( -# v_cache.shape[1] == self.rotary_embedding.end -# ), f"Cache size {v_cache.shape[1]} is smaller than rotary embedding end {self.rotary_embedding.end}" - -# # [batch_size, seq_len, num_heads, d_qk] -# query_states = query_states.view( -# batch_size, q_length, self.n_local_q_heads, self.d_qk -# ) # [batch_size, q_length, self.n_heads, d_qk] -# kv_length = key_states.shape[1] -# key_states = key_states.view( -# batch_size, kv_length, self.n_local_kv_heads, self.d_qk -# ) # [batch_size, kv_length, self.n_heads, d_qk] -# value_states = value_states.view( -# batch_size, kv_length, self.n_local_kv_heads, self.d_v -# ) # [batch_size, kv_length, self.n_heads, d_v] - -# # NOTE: this scale is for µTransfer, -# # in SP, we use sqrt(1/d_h) -# softmax_scale = 1 / query_states.shape[-1] if self.is_using_mup else None -# attention_output = flash_attn_with_kvcache( -# query_states, -# k_cache, -# v_cache, -# key_states, -# value_states, -# rotary_cos=None, -# rotary_sin=None, -# # TODO @nouamane: seems like this doesn't help to indicate padding in (for first iteration it's just 0) -# cache_seqlens=position_offsets.contiguous(), -# softmax_scale=softmax_scale, -# causal=True, -# rotary_interleaved=False, # GPT-NeoX style -# ) - -# store.update( -# { -# "key": k_cache, # flash-attn has updated with new key_states using cache_seqlens -# "value": v_cache, -# "position_offsets": position_offsets, -# } -# ) - -# else: # Training case -# # Apply rotary embeddings to query/key states -# # NOTE: The layout is different from models/llama.py which is [batch_size, num_heads, seq_len, d_qk] -# # Here it is, [batch_size, seq_len, num_heads, d_qk] -# # [2, batch_size, seq_len, num_heads, d_qk] -# key_value_states = torch.cat([key_states.unsqueeze(0), value_states.unsqueeze(0)], dim=0) -# # [batch_size, seq_len, 2, num_heads, d_qk] -# key_value_states = key_value_states.permute(1, 2, 0, 3, 4).contiguous() -# query_states, key_value_states = self.flash_rotary_embedding(query_states, kv=key_value_states) -# # [batch_size, seq_len, num_heads, d_qk] -# key_states, value_states = torch.split(key_value_states, 1, dim=2) - -# q_sequence_mask = sequence_mask -# kv_sequence_mask = sequence_mask - -# kv_length = key_states.shape[1] -# # [batch_size, seq_len, num_heads, d_qk] -# # Shaping for use in `flash-attn` version of flash-attn: `flash_attn_unpadded_func` -# query_states = query_states.view( -# batch_size * q_length, self.n_local_q_heads, self.d_qk -# ) # [batch_size * q_length, self.n_heads, d_qk] - -# key_states = key_states.view( -# batch_size * kv_length, self.n_local_kv_heads, self.d_qk -# ) # [batch_size * kv_length, self.n_heads, d_qk] -# value_states = value_states.view( -# batch_size * kv_length, self.n_local_kv_heads, self.d_v -# ) # [batch_size * kv_length, self.n_heads, d_v] - -# attention_output = self.attention( -# query_states=query_states, -# key_states=key_states, -# value_states=value_states, -# q_sequence_mask=q_sequence_mask, -# kv_sequence_mask=kv_sequence_mask, -# ) - -# attention_output = ( -# attention_output.contiguous().view(batch_size, q_length, self.n_local_q_heads * self.d_v).transpose(0, 1) -# ) -# # output = self.o_proj(attention_output) -# # return {"hidden_states": output, "sequence_mask": sequence_mask} - -# return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} -# return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () -# return_outputs["qkv_states_without_pe"] = ( -# query_states_without_pe, -# key_states_without_pe, -# value_states_without_pe, -# ) -# return_outputs["attention_output"] = attention_output -# return return_outputs - class CausalSelfAttention(nn.Module, AttachableStore): def __init__( @@ -1029,6 +315,7 @@ def __init__( assert ( config.num_attention_heads % config.num_key_value_heads == 0 ), f"Number of attention heads ({config.num_attention_heads}) must be divisible by number of key/value heads ({config.num_key_value_heads})." + self.tp_pg = tp_pg self.n_local_q_heads = config.num_attention_heads // tp_pg.size() self.n_local_kv_heads = config.num_key_value_heads // tp_pg.size() self.n_repeats = config.num_attention_heads // config.num_key_value_heads @@ -1490,10 +777,16 @@ def forward( hidden_states ) # [seq_len, batch_size, n_local_q_heads * d_qk + 2 * n_local_kv_heads * d_qk] - # qkv_states = qkv_states.transpose(0, 1) - # q_length, batch_size, _ = qkv_states.shape + # log_rank( + # f"qkv_states after qkv_proj: qkv_states.shape={qkv_states.shape}", + # logger=logger, + # level=logging.INFO, + # ) + + qkv_states = qkv_states.transpose(0, 1) + q_length, batch_size, _ = qkv_states.shape # NOTE: this is the new splitting dimension - batch_size, q_length, _ = qkv_states.shape + # batch_size, q_length, _ = qkv_states.shape if self.is_gqa: query_states, key_states, value_states = torch.split( @@ -1522,6 +815,31 @@ def forward( .contiguous() ) # [3, batch_size, seq_len, n_local_q_heads, d_qk] + # import os + + # os.makedirs(DEBUG_PATH, exist_ok=True) + # tp_rank = dist.get_rank(group=self.tp_pg) + + # torch.save(query_states, f"{DEBUG_PATH}/query_states_before_pos_tp_rank_{tp_rank}.pt") + # torch.save(key_states, f"{DEBUG_PATH}/query_states_before_pos_tp_rank_{tp_rank}.pt") + # torch.save(value_states, f"{DEBUG_PATH}/query_states_before_pos_tp_rank_{tp_rank}.pt") + + # log_rank( + # f"query_states: query_states.shape={query_states.shape}", + # logger=logger, + # level=logging.INFO, + # ) + # log_rank( + # f"key_states: key_states.shape={key_states.shape}", + # logger=logger, + # level=logging.INFO, + # ) + # log_rank( + # f"value_states: value_states.shape={value_states.shape}", + # logger=logger, + # level=logging.INFO, + # ) + # query_states_without_pe = rearrange( # query_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" # ) @@ -1749,6 +1067,10 @@ def forward( batch_size * kv_length, self.n_local_kv_heads, self.d_v ) # [batch_size * kv_length, self.n_heads, d_v] + # torch.save(query_states, f"{DEBUG_PATH}/query_states_after_pos_tp_rank_{tp_rank}.pt") + # torch.save(key_states, f"{DEBUG_PATH}/query_states_after_pos_tp_rank_{tp_rank}.pt") + # torch.save(value_states, f"{DEBUG_PATH}/query_states_after_pos_tp_rank_{tp_rank}.pt") + attention_output = self.attention( query_states=query_states, key_states=key_states, @@ -1757,9 +1079,14 @@ def forward( kv_sequence_mask=kv_sequence_mask, ) + # torch.save(attention_output, f"{DEBUG_PATH}/attention_output_before_reshape_{tp_rank}.pt") + attention_output = ( attention_output.contiguous().view(batch_size, q_length, self.n_local_q_heads * self.d_v).transpose(0, 1) ) + + # torch.save(attention_output, f"{DEBUG_PATH}/attention_output_after_reshape_{tp_rank}.pt") + output = self.o_proj(attention_output) output = output.transpose(0, 1) return {"hidden_states": output, "sequence_mask": sequence_mask} diff --git a/src/nanotron/parallel/tensor_parallel/functional.py b/src/nanotron/parallel/tensor_parallel/functional.py index a951c588..eb436df2 100644 --- a/src/nanotron/parallel/tensor_parallel/functional.py +++ b/src/nanotron/parallel/tensor_parallel/functional.py @@ -48,12 +48,20 @@ def forward( rank=0, ) + # import os + # os.makedirs(DEBUG_PATH, exist_ok=True) + # tp_rank = dist.get_rank(group=group) + # torch.save(sharded_logits, f"{DEBUG_PATH}/step1_sharded_logits_tp_rank_{tp_rank}.pt") + # Maximum value along last dimension across all GPUs. logits_max = torch.max(sharded_logits, dim=-1)[0] dist.all_reduce(logits_max, op=dist.ReduceOp.MAX, group=group) # Subtract the maximum value. sharded_logits = sharded_logits - logits_max.unsqueeze(dim=-1) + # torch.save(logits_max, f"{DEBUG_PATH}/logits_max_tp_rank_{tp_rank}.pt") + # torch.save(sharded_logits, f"{DEBUG_PATH}/step2_sharded_logits_tp_rank_{tp_rank}.pt") + # Get the shard's indices sharded_hidden_size = sharded_logits.shape[-1] rank = dist.get_rank(group) @@ -81,15 +89,21 @@ def forward( # All reduce is needed to get the chunks from other GPUs. dist.all_reduce(predicted_logits, op=dist.ReduceOp.SUM, group=group) + # torch.save(predicted_logits, f"{DEBUG_PATH}/predicted_logits_tp_rank_{tp_rank}.pt") + # Sum of exponential of logits along vocab dimension across all GPUs. exp_logits = sharded_logits torch.exp(sharded_logits, out=exp_logits) sum_exp_logits = exp_logits.sum(dim=-1) dist.all_reduce(sum_exp_logits, op=dist.ReduceOp.SUM, group=group) + # torch.save(sum_exp_logits, f"{DEBUG_PATH}/sum_exp_logits_tp_rank_{tp_rank}.pt") + # Loss = log(sum(exp(logits))) - predicted-logit. loss = torch.log(sum_exp_logits) - predicted_logits + # torch.save(loss, f"{DEBUG_PATH}/loss_tp_rank_{tp_rank}.pt") + # Normalize and optionally smooth logits exp_logits.div_(sum_exp_logits.unsqueeze(dim=-1)) From 328fb710532a71fdd2b99ca5523f85df5521db45 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Wed, 12 Jun 2024 12:28:29 +0000 Subject: [PATCH 30/43] code use for exp 33 --- src/nanotron/constants.py | 5 +- src/nanotron/debug/monitor.py | 13 ++- src/nanotron/models/llama.py | 97 ++++++++++--------- .../parallel/tensor_parallel/functional.py | 13 ++- src/nanotron/trainer.py | 18 ++-- 5 files changed, 81 insertions(+), 65 deletions(-) diff --git a/src/nanotron/constants.py b/src/nanotron/constants.py index 05555003..ed651077 100644 --- a/src/nanotron/constants.py +++ b/src/nanotron/constants.py @@ -16,7 +16,10 @@ NEEDLE = None GLOBAL_STEP: Optional[int] = None -LOG_STATE_INTERVAL = 500 +LOG_STATE_INTERVAL = 5000 CONFIG = None TRAINING_CONFIG = None + + +DEBUG_PATH = "./debug/nn_states_with_bs_2_and_transpose_qkv/acts/" diff --git a/src/nanotron/debug/monitor.py b/src/nanotron/debug/monitor.py index e9f119c7..81c51f52 100644 --- a/src/nanotron/debug/monitor.py +++ b/src/nanotron/debug/monitor.py @@ -2,6 +2,7 @@ import torch import torch.distributed as dist +from nanotron.constants import DEBUG_PATH from nanotron.models.base import NanotronModel from nanotron.parallel import ParallelContext from torch import nn @@ -22,13 +23,13 @@ def compute_stats(name, tensors): stats[key] = {} stats[key] = { - "mean": tensor.mean().item(), + "mean": tensor.cpu().mean().item(), # "std": tensor.std().item(), # "var": tensor.var().item(), # "norm": tensor.norm().item(), # "min": tensor.min().item(), # "max": tensor.max().item(), - "amax": tensor.abs().max().item(), + "amax": tensor.cpu().abs().max().item(), } # NOTE: now all reduce mean this across tp ranks @@ -80,12 +81,14 @@ def save(name, tensor): import os # from nanotron.constants import - DIR = "./debug/nn_states_after_fix/acts/" + # DIR = "./debug/nn_states_with_bs_1/acts/" - os.makedirs(DIR, exist_ok=True) + os.makedirs(DEBUG_PATH, exist_ok=True) if dp_rank == 0: - torch.save(tensor, f"{DIR}/{name}_dp_rank_{dp_rank}_and_pp_rank_{pp_rank}_and_tp_rank_{tp_rank}.pt") + torch.save( + tensor, f"{DEBUG_PATH}/{name}_dp_rank_{dp_rank}_and_pp_rank_{pp_rank}_and_tp_rank_{tp_rank}.pt" + ) if len(outputs) > 1: for i, out in enumerate(outputs): diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index e923d66d..cb799bc3 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -413,14 +413,14 @@ def __init__( ), ) - # log_rank( - # f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", - # logger=logger, - # level=logging.WARNING, - # rank=0, - # ) + log_rank( + f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", + logger=logger, + level=logging.WARNING, + rank=0, + ) - def _forward( + def forward( self, # hidden_states: TensorType["sharded_seq_len", "batch_size", "hidden_size"], hidden_states: TensorType["sharded_batch_size", "seq_len", "hidden_size"], @@ -602,6 +602,7 @@ def _forward( ) output = self.o_proj(attention_output) + output = output.transpose(0, 1) if constants.CONFIG.infini_attention.turn_on_memory is True: if ( @@ -637,12 +638,12 @@ def _forward( outputs = torch.cat(outputs, dim=1) # concat along sequence dimension assert outputs.shape == hidden_states.shape - # if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0: - # if dist.get_rank() == 0: - # import wandb + if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0: + if dist.get_rank() == 0: + import wandb - # logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) - # wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) + logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) + wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) # sequence_masks = torch.cat(sequence_masks, dim=1) # assert sequence_masks.shape == sequence_mask.shape @@ -759,11 +760,11 @@ def _update_memory(self, prev_memory, prev_normalization, key_states, value_stat return memory, normalization - def forward( + def forward_with_hidden_states( self, hidden_states, # [seq_len, batch_size, hidden_size] sequence_mask, # [batch_size, seq_len] - # return_qkv_states: bool = False, + return_qkv_states: bool = False, ): from flash_attn import bert_padding from flash_attn.flash_attn_interface import ( @@ -840,33 +841,41 @@ def forward( # level=logging.INFO, # ) - # query_states_without_pe = rearrange( - # query_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" - # ) - # key_states_without_pe = rearrange( - # key_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" - # ) - # value_states_without_pe = rearrange( - # value_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head" - # ) + ############ START EXP33 ##### + query_states_without_pe = rearrange( + query_states, + "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head", + seq_len=self.segment_length, + ) + key_states_without_pe = rearrange( + key_states, + "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head", + seq_len=self.segment_length, + ) + value_states_without_pe = rearrange( + value_states, + "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head", + seq_len=self.segment_length, + ) + ############ END EXP32 ############ # query_states_without_pe = rearrange( # query_states, - # "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # # seq_len=self.segment_length, - # seq_len=seq_len, + # "batch_size seq_len n_heads d_head -> seq_len n_heads batch_size d_head", + # seq_len=self.segment_length, + # # seq_len=seq_len, # ) # key_states_without_pe = rearrange( # key_states, - # "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # # seq_len=self.segment_length, - # seq_len=seq_len, + # "batch_size seq_len n_heads d_head -> seq_len n_heads batch_size d_head", + # seq_len=self.segment_length, + # # seq_len=seq_len, # ) # value_states_without_pe = rearrange( # value_states, - # "seq_len batch_size n_heads d_head -> seq_len n_heads batch_size d_head", - # # seq_len=self.segment_length, - # seq_len=seq_len, + # "batch_size seq_len n_heads d_head -> seq_len n_heads batch_size d_head", + # seq_len=self.segment_length, + # # seq_len=seq_len, # ) # assert query_states_without_pe.shape[0] == self.segment_length @@ -1087,19 +1096,19 @@ def forward( # torch.save(attention_output, f"{DEBUG_PATH}/attention_output_after_reshape_{tp_rank}.pt") - output = self.o_proj(attention_output) - output = output.transpose(0, 1) - return {"hidden_states": output, "sequence_mask": sequence_mask} + # output = self.o_proj(attention_output) + # output = output.transpose(0, 1) + # return {"hidden_states": output, "sequence_mask": sequence_mask} - # return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} - # return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () - # return_outputs["qkv_states_without_pe"] = ( - # query_states_without_pe, - # key_states_without_pe, - # value_states_without_pe, - # ) - # return_outputs["attention_output"] = attention_output - # return return_outputs + return_outputs = {"hidden_states": None, "sequence_mask": sequence_mask} + return_outputs["qkv_states"] = (query_states, key_states, value_states) if return_qkv_states else () + return_outputs["qkv_states_without_pe"] = ( + query_states_without_pe, + key_states_without_pe, + value_states_without_pe, + ) + return_outputs["attention_output"] = attention_output + return return_outputs class LlamaDecoderLayer(nn.Module): diff --git a/src/nanotron/parallel/tensor_parallel/functional.py b/src/nanotron/parallel/tensor_parallel/functional.py index eb436df2..fabd0262 100644 --- a/src/nanotron/parallel/tensor_parallel/functional.py +++ b/src/nanotron/parallel/tensor_parallel/functional.py @@ -20,7 +20,6 @@ import nanotron.distributed as dist from nanotron import logging -from nanotron.logging import log_rank from nanotron.parallel.tensor_parallel.distributed_differentiable_primitives import ( differentiable_all_gather, differentiable_all_reduce_sum, @@ -41,12 +40,12 @@ def forward( target, # (batch_size, length) group: dist.ProcessGroup, ): - log_rank( - f"sharded_logits input of _ShardedCrossEntropy: sharded_logits.shape={sharded_logits.shape}", - logger=logger, - level=logging.INFO, - rank=0, - ) + # log_rank( + # f"sharded_logits input of _ShardedCrossEntropy: sharded_logits.shape={sharded_logits.shape}", + # logger=logger, + # level=logging.INFO, + # rank=0, + # ) # import os # os.makedirs(DEBUG_PATH, exist_ok=True) diff --git a/src/nanotron/trainer.py b/src/nanotron/trainer.py index 27ed32ed..8fc1b605 100644 --- a/src/nanotron/trainer.py +++ b/src/nanotron/trainer.py @@ -435,8 +435,10 @@ def train( if isinstance(prof, torch.profiler.profile): prof.step() - # if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: - # nn_logs, nn_handles = monitor_nanotron_model(self.model, self.parallel_context) + if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: + from nanotron.debug.monitor import monitor_nanotron_model + + nn_logs, nn_handles = monitor_nanotron_model(self.model, self.parallel_context) self.iteration_start_time = time.time() self._update_dataloader_based_on_training_stages(dataloader_or_dls) @@ -450,14 +452,14 @@ def train( if (self.iteration_step - 1) % self.config.logging.iteration_step_info_interval == 0: self.train_step_logs(outputs=outputs, loss_avg=loss_avg) - # if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: - # from nanotron.debug.monitor import convert_logs_to_flat_logs + if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: + from nanotron.debug.monitor import convert_logs_to_flat_logs - # if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: - # wandb.log({**convert_logs_to_flat_logs(nn_logs), "iteration_step": self.iteration_step}) + if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: + wandb.log({**convert_logs_to_flat_logs(nn_logs), "iteration_step": self.iteration_step}) - # for handle in nn_handles: - # handle.remove() + for handle in nn_handles: + handle.remove() # Checkpoint if self.iteration_step % self.config.checkpoints.checkpoint_interval == 0: From 838cce606351a7cb211227b9590208d585cbf88d Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Thu, 13 Jun 2024 05:32:08 +0000 Subject: [PATCH 31/43] fix inference --- run_generate.py | 29 ++++++- src/nanotron/models/llama.py | 158 +++++------------------------------ 2 files changed, 46 insertions(+), 141 deletions(-) diff --git a/run_generate.py b/run_generate.py index c25ef8bf..c4f3310e 100644 --- a/run_generate.py +++ b/run_generate.py @@ -250,6 +250,22 @@ def evaluate(self, X, y): Lastly, obtaining verifiable credentials is paramount for demonstrating competence within the competitive realm of real estate investing. Securing physical or digital ID cards and certificates serves as """ +PASSKEY_1024_CTX_AND_20_DEPTH = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on............................... The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the. The pass key is 5. Remember it. 5 is the pass key. salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world iThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The. \n\nWhat is the pass key? The pass key is " + + +PASSKEY_1024_CTX_AND_0_DEPTH = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on............................................................... . The pass key is 7. Remember it. 7 is the pass key. The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world iThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The. \n\nWhat is the pass key? The pass key is " + + +PASSKEY_1024_CTX_AND_90_DEPTH = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on............................................................... The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar.. The pass key is 3. Remember it. 3 is the pass key. The urban jungle never sleeps.\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world iThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The. \n\nWhat is the pass key? The pass key is " + +HARRY_POTTER_256_TOKENS = """ +\nMr. and Mrs. Dursley, of number four, Privet Drive, were proud to say\nthat they were perfectly normal, thank you very much. They were the last\npeople you'd expect to be involved in anything strange or mysterious,\nbecause they just didn't hold with such nonsense.\n\nMr. Dursley was the director of a firm called Grunnings, which made\ndrills. He was a big, beefy man with hardly any neck, although he did\nhave a very large mustache. Mrs. Dursley was thin and blonde and had\nnearly twice the usual amount of neck, which came in very useful as she\nspent so much of her time craning over garden fences, spying on the\nneighbors. The Dursleys had a small son called Dudley and in their\nopinion there was no finer boy anywhere.\n\nThe Dursleys had everything they wanted, but they also had a secret, and\ntheir greatest fear was that somebody would discover it. They didn't\nthink they could bear it if anyone found out about the Potters. Mrs.\nPotter was Mrs. Dursley's sister, but they hadn't met for several +""" + +MATH_TEXT_256_TOKENS = """ +\nThe problem provided is derived from the 1980 American High School Mathematics Examination (AHSME), specifically problem number 17. This problem requires knowledge of complex numbers and algebraic manipulations. We will break down the solution into smaller steps and explain the underlying mathematical principles. Complex numbers can be represented as ordered pairs (a, b) or in the form of a + bi, where a and b are real numbers, and i is the square root of -1. When squaring i, you get (-1). Let's examine the given expression more closely: (n + i)^4 = n^4 + 4in³ - 6n² - 4in + 1 For this expression to result in an integer value, both its real and imaginary components must equal integers. First, let us focus on the imaginary part of the expression: 4in³ - 4in. For these terms to cancel out when adding the whole expression, they need to be equivalent; hence: 4in³ - 4in = 0 Now, factor out 4in: 4in(n² - 1) = 0 The equation above implies two possible scenarios. Either 4in equals zero +""" + def get_args(): parser = argparse.ArgumentParser() @@ -257,7 +273,7 @@ def get_args(): parser.add_argument("--dp", type=int, default=0) parser.add_argument("--pp", type=int, default=0) parser.add_argument("--tp", type=int, default=0) - parser.add_argument("--max-new-tokens", type=int, default=128, help="Maximum number of new tokens to generate") + parser.add_argument("--max-new-tokens", type=int, default=40, help="Maximum number of new tokens to generate") return parser.parse_args() @@ -376,8 +392,8 @@ def main(): # "Passage: Daniel went back to the garden. Mary travelled to the kitchen. Sandra journeyed to the kitchen. Sandra went to the hallway. John went to the bedroom. Mary went back to the garden. Where is Mary?\nAnswer:", # "This is a math lesson. Answer the question. What is the result of 1 + 1? The result is ", # "This is a math lesson. Answer the question. What is the result of 1 + 1? The result is ", - "def fib(n)", # "def fib(n)", + # "def fib(x)", # "This film was probably inspired by Godzilla, ", # "This film was probably inspired by Godzilla, ", # "Paris is the capital of ", @@ -386,7 +402,8 @@ def main(): # END_PASSKEY_EXTACT_32K_TOKENS, # PASSKEY_NINETY_PERCENT, # "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The pass key is 24. Remember it. 24 is the pass key. What is the pass key? The pass key is ", - # "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The grass is green. The sky is blue. The pass key is 24. Remember it. 24 is the pass key. What is the pass key? The pass key is ", + "The pass key is 24. Remember it. 24 is the pass key. The grass is green. The sky is blue. What is the pass key? The pass key is ", + # "The pass key is 4. Remember it. 4 is the pass key. The grass is green. The sky is blue. The grass is green. The sky is blue. The grass is green. The sky is blue. The grass is green. The sky is blue.The grass is green. The sky is blue The grass is green. The sky is blue.The grass is green. The sky is blue The grass is green. The sky is blue.The grass is green. The sky is blue The grass is green. The sky is blue.The grass is green. The sky is blue The grass is green. The sky is blue. The grass is green. The sky is blue. The grass is green. The sky is blue. The grass is green. The sky is blue. The grass is green. The sky is blue.The grass is green. The sky is blue The grass is green. The sky is blue.The grass is green. The sky is blue The grass is green. The sky is blue. What is the pass key? The pass key is ", # FINETUNE, # "1234", # "1234", @@ -402,6 +419,12 @@ def main(): # NOTE: last training data # "Effectively managing student enquiries lies at the heart of successful real estate and investment education. Through leveraging diverse resources such as FAQs, online enquiry ", # TRAINING_DATA_4K, + # TRAINING_DATA_4K, + # PASSKEY_1024_CTX_AND_0_DEPTH, + # PASSKEY_1024_CTX_AND_0_DEPTH + # PASSKEY_1024_CTX_AND_90_DEPTH, + # PASSKEY_1024_CTX_AND_90_DEPTH, + # MATH_TEXT_256_TOKENS ] outputs = decode_text( diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index cb799bc3..c9dc5b15 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -379,24 +379,11 @@ def __init__( self.prefill_kv_len = ( config.max_position_embeddings - # 2048 ) # TODO @nouamane: compute based on free memory, because in rope we can surpass max_position_embeddings - # self.n_segments = 16 - # self.segment_length = config.max_position_embeddings // self.n_segments # assert config.max_position_embeddings == 32768 - - # NOTE: for 1b training - # self.segment_length = 2048 - # self.segment_length = 4096 - # self.segment_length = 1024 # for 4096 context length self.segment_length = constants.CONFIG.infini_attention.segment_length # for 1024 context length - # NOTE: for sanity 200m training - # prev 16 - # self.segment_length = 256 - # self.segment_length = 16 - device = self.o_proj.weight.device dtype = self.o_proj.weight.dtype @@ -426,28 +413,10 @@ def forward( hidden_states: TensorType["sharded_batch_size", "seq_len", "hidden_size"], sequence_mask: TensorType["batch_size", "seq_len"], ): - # if self.layer_idx == 4: - # assert 1 == 1 - - # batch_size = hidden_states.shape[1] - # seq_len = hidden_states.shape[0] - hidden_states.shape[0] seq_len = hidden_states.shape[1] - # assert seq_len == 1024 - # assert seq_len == 32768 - - # assert seq_len % self.n_segments == 0 - - # segment_length = seq_len // self.n_segments - # hidden_size = hidden_states.shape[2] - if seq_len > self.segment_length: - # n_segments = seq_len // self.segment_length - # segment_hidden_states = torch.chunk(hidden_states, chunks=n_segments, dim=0) - # segment_sequence_masks = torch.chunk(sequence_mask, chunks=n_segments, dim=1) - import math n_segments = math.ceil(seq_len / self.segment_length) @@ -455,9 +424,7 @@ def forward( seq_len - (n_segments - 1) * self.segment_length ] assert sum(segment_lengths) == seq_len - # assert hidden_states.shape[0] == seq_len assert hidden_states.shape[1] == seq_len - # segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=0) segment_hidden_states = torch.split(hidden_states, segment_lengths, dim=1) # NOTE: assume that mask are all the same # because we split across sequence length @@ -471,67 +438,26 @@ def forward( memory = None normalization = None - # memory = prev_memory - # normalization = prev_normalization - outputs = [] - # sequence_masks = [] idx = 0 logs = {} for segment_hidden_state, segment_sequence_mask in zip(segment_hidden_states, segment_sequence_masks): - # if idx == 1: - # memory = None - # normalization = None - attn_outputs = self.forward_with_hidden_states( hidden_states=segment_hidden_state, sequence_mask=segment_sequence_mask, return_qkv_states=True ) local_attn_outputs = attn_outputs["attention_output"] - # query_states, key_states, value_states = attn_outputs["qkv_states"] query_states, key_states, value_states = attn_outputs["qkv_states_without_pe"] - - # # NOTE: these are the shape for non-megatron-sp - # assert query_states.shape[0] == self.segment_length - # assert local_attn_outputs.shape[1] == self.segment_length - - query_states = rearrange( - query_states, - "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", - # seq_len=self.segment_length, - n_heads=self.n_local_q_heads, - d_head=self.d_qk, - ) - - key_states = rearrange( - key_states, - "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", - # batch_size=batch_size, - # seq_len=self.segment_length, - n_heads=self.n_local_kv_heads, - d_head=self.d_qk, - ) - - value_states = rearrange( - value_states, - "seq_len n_heads batch_size d_head -> batch_size n_heads seq_len d_head", - # batch_size=batch_size, - # seq_len=self.segment_length, - n_heads=self.n_local_kv_heads, - d_head=self.d_qk, - ) - - # local_attn_outputs = rearrange( - # local_attn_outputs, - # "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", - # d_head=self.d_qk, - # ) + q_bs = query_states.shape[0] + q_length = query_states.shape[2] local_attn_outputs = rearrange( local_attn_outputs, - "batch_size seq_len (n_heads d_head) -> batch_size n_heads seq_len d_head", + "seq_len batch_size (n_heads d_head) -> batch_size n_heads seq_len d_head", # seq_len=self.segment_length, + batch_size=q_bs, + seq_len=q_length, d_head=self.d_qk, ) @@ -544,8 +470,6 @@ def forward( if constants.CONFIG.infini_attention.turn_on_memory is True: # NOTE: because in generation, the sequence length increases - # assert query_states.shape == (batch_size, self.n_local_q_heads, segment_length, self.d_qk) - # assert query_states.shape == key_states.shape == value_states.shape retrieved_memory = self._retrieve_from_memory( query_states, prev_memory=memory, prev_normalization=normalization ) @@ -565,16 +489,12 @@ def forward( # rank=0, # ) - # retrieved_memory = retrieved_memory.detach() - global_weights = F.sigmoid(self.balance_factors) global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") local_weights = 1 - F.sigmoid(self.balance_factors) local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") - # assert torch.allclose(global_weights + local_weights, torch.ones_like(global_weights)) - # log_rank( # f"[idx={idx}] global_weights.shape = {global_weights.shape}, global_weights: {global_weights}", # logger=logger, @@ -598,11 +518,10 @@ def forward( "batch_size n_heads seq_len d_head -> batch_size seq_len (n_heads d_head)", n_heads=self.n_local_q_heads, d_head=self.d_qk, - # seq_len=self.segment_length, + seq_len=q_length, ) output = self.o_proj(attention_output) - output = output.transpose(0, 1) if constants.CONFIG.infini_attention.turn_on_memory is True: if ( @@ -623,18 +542,16 @@ def forward( logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) - # assert output.shape == (segment_length, batch_size, hidden_size) + if idx >= 1: + assert 1 == 1 memory, normalization = self._update_memory(memory, normalization, key_states, value_states) - # memory = prev_memory if prev_memory is not None else 0.detach() outputs.append(output) - # memory, normalization = memory.detach(), normalization.detach() idx += 1 # NOTE: update memory - # outputs = torch.cat(outputs, dim=0) # concat along sequence dimension outputs = torch.cat(outputs, dim=1) # concat along sequence dimension assert outputs.shape == hidden_states.shape @@ -645,18 +562,13 @@ def forward( logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) - # sequence_masks = torch.cat(sequence_masks, dim=1) - # assert sequence_masks.shape == sequence_mask.shape return_outputs = { "hidden_states": outputs, "sequence_mask": sequence_mask, - # "memory": memory, - # "normalization": normalization, } return return_outputs def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): - # return torch.zeros_like(query_states) if prev_memory is None or prev_normalization is None: return torch.zeros_like(query_states) @@ -664,20 +576,6 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): prev_memory is not None and prev_normalization is not None ) - # if self.n_repeats > 1: - # from einops import repeat - - # prev_memory = repeat( - # prev_memory, - # "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", - # n=self.n_repeats, - # ) - # prev_normalization = repeat( - # prev_normalization, - # "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", - # n=self.n_repeats, - # ) - sigma_query_states = F.elu(query_states) + 1 retrieved_memory = einsum( sigma_query_states, @@ -787,7 +685,6 @@ def forward_with_hidden_states( qkv_states = qkv_states.transpose(0, 1) q_length, batch_size, _ = qkv_states.shape # NOTE: this is the new splitting dimension - # batch_size, q_length, _ = qkv_states.shape if self.is_gqa: query_states, key_states, value_states = torch.split( @@ -841,45 +738,30 @@ def forward_with_hidden_states( # level=logging.INFO, # ) - ############ START EXP33 ##### query_states_without_pe = rearrange( query_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head", - seq_len=self.segment_length, + batch_size=batch_size, + seq_len=q_length, + n_heads=self.n_local_q_heads, + d_head=self.d_qk, ) key_states_without_pe = rearrange( key_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head", - seq_len=self.segment_length, + batch_size=batch_size, + seq_len=q_length, + n_heads=self.n_local_kv_heads, + d_head=self.d_qk, ) value_states_without_pe = rearrange( value_states, "batch_size seq_len n_heads d_head -> batch_size n_heads seq_len d_head", - seq_len=self.segment_length, + batch_size=batch_size, + seq_len=q_length, + n_heads=self.n_local_kv_heads, + d_head=self.d_qk, ) - ############ END EXP32 ############ - - # query_states_without_pe = rearrange( - # query_states, - # "batch_size seq_len n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_length, - # # seq_len=seq_len, - # ) - # key_states_without_pe = rearrange( - # key_states, - # "batch_size seq_len n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_length, - # # seq_len=seq_len, - # ) - # value_states_without_pe = rearrange( - # value_states, - # "batch_size seq_len n_heads d_head -> seq_len n_heads batch_size d_head", - # seq_len=self.segment_length, - # # seq_len=seq_len, - # ) - - # assert query_states_without_pe.shape[0] == self.segment_length - # assert query_states_without_pe.shape[0] == seq_len store = self.get_local_store() if store is not None: # Inference case From 25f1f35c9a51d2b7500cfec56b04cc416ed3782c Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Wed, 19 Jun 2024 09:28:51 +0000 Subject: [PATCH 32/43] refactor passkey retrivial data generation script --- .../infinite-context-length/generate_data.py | 123 ++-- .../infinite-context-length/generate_evals.py | 593 ------------------ 2 files changed, 68 insertions(+), 648 deletions(-) delete mode 100644 examples/infinite-context-length/generate_evals.py diff --git a/examples/infinite-context-length/generate_data.py b/examples/infinite-context-length/generate_data.py index 48eace62..1ea1f051 100644 --- a/examples/infinite-context-length/generate_data.py +++ b/examples/infinite-context-length/generate_data.py @@ -62,35 +62,21 @@ def read_context_files(tokenizer, soft_prompt, retrieval_question, target_cut_le return context -# def insert_needle(context, needle): -# # Get the position to insert the needle -# insertion_point = random.randint(0, len(context) - len(needle)) - 1 - -# # Insert the needle at the appropriate position -# new_context = context[:insertion_point] + needle + context[insertion_point:] - -# return new_context - - def insert_needle_with_depth(needle, context, depth_percent, target_cut_length, tokenizer): content_ids = tokenizer.encode(context) - # content_length = len(content_ids) needle_ids = tokenizer.encode(needle) if depth_percent == 100: # If depth percent is 100, place the needle at the end - # new_context = context[: len(context) - len(needle)] + needle new_context_ids = content_ids[: len(content_ids) - len(needle_ids)] + needle_ids else: # Get the position to insert the needle - # insertion_point = int(context_length * (depth_percent / 100)) insertion_point = int(len(content_ids) * (depth_percent / 100)) # Find the nearest period to the insertion point while context[insertion_point] != "." and insertion_point > 0: insertion_point -= 1 - # Insert the needle at the appropriate position # new_context = context[:insertion_point] + needle + context[insertion_point:content_length] new_context_ids = ( content_ids[:insertion_point] @@ -98,16 +84,21 @@ def insert_needle_with_depth(needle, context, depth_percent, target_cut_length, + content_ids[insertion_point : (target_cut_length - len(needle_ids))] ) - new_content = tokenizer.decode(new_context_ids) + new_content = tokenizer.decode(new_context_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True) return new_content def generate_needle_in_haystack_test( - needle, needle_prompt, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent + needle, + needle_prompt, + soft_prompt: str, + retrieval_question, + context_length, + depth_percent, + tokenizer, + is_padding: bool, ): - # Load up the haystack context - tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") target_cut_length = context_length - token_length(tokenizer, PROMPT.format(soft_prompt, 1, retrieval_question)) - 1 context = read_context_files(tokenizer, soft_prompt, retrieval_question, target_cut_length) @@ -119,20 +110,21 @@ def generate_needle_in_haystack_test( prompt = f"{soft_prompt} {context_with_needle}. \n\n{retrieval_question}" assert str(needle) in context_with_needle, f"depth_percent: {depth_percent}" - # assert abs(context_length - token_length(tokenizer, prompt)) <= 10 - # assert context_length - token_length(tokenizer, prompt) - # remaining_tokens = context_length - token_length(tokenizer, prompt) # NOTE: now add `.` to soft_prompt so that the token length is exactly equal to context_length - while ( - token_length(tokenizer, PROMPT.format(soft_prompt, context_with_needle, retrieval_question)) < context_length - ): - soft_prompt += "." + if is_padding is True: + while ( + token_length(tokenizer, PROMPT.format(soft_prompt, context_with_needle, retrieval_question)) + < context_length + ): + soft_prompt += "." prompt = PROMPT.format(soft_prompt, context_with_needle, retrieval_question) - assert ( - token_length(tokenizer, prompt) == context_length - ), f"Token length: {token_length(tokenizer, prompt)}, Context length: {context_length}, depth_percent: {depth_percent}" + + if is_padding is True: + assert ( + token_length(tokenizer, prompt) == context_length + ), f"Token length: {token_length(tokenizer, prompt)}, Context length: {context_length}, depth_percent: {depth_percent}" return prompt @@ -141,66 +133,85 @@ def get_args(): parser = argparse.ArgumentParser() parser.add_argument("--context_length", type=int, required=True) parser.add_argument("--depth_percent", type=int, required=True) + parser.add_argument("--num_prompts", type=int, default=5) + parser.add_argument( + "--tokenizer_path", type=str, default="/fsx/haojun/lighteval_evaluation_model/NanotronLlama3-8B" + ) parser.add_argument("--id", type=int, required=True) + parser.add_argument("--haystack_dir", type=str, default="./haystack_txt/") + parser.add_argument("--is_push_to_hub", type=bool, default=False) + parser.add_argument("--is_exact_context_length", type=int, default=1) # 1 is True, 0 is False + parser.add_argument("--is_padding", type=int, default=1) # 1 is True, 0 is False return parser.parse_args() if __name__ == "__main__": args = get_args() + for key, value in vars(args).items(): + print(f"{key}: {value}") + context_length = args.context_length depth_percent = args.depth_percent + tokenizer_path = args.tokenizer_path + num_prompts = args.num_prompts id = args.id + haystack_dir = args.haystack_dir + is_push_to_hub = args.is_push_to_hub + # is_exact_context_length = args.is_exact_context_length + is_exact_context_length = False if args.is_exact_context_length == 0 else True + is_padding = False if args.is_padding == 0 else True - haystack_dir = "./" - # NOTE: depth_percent + 1 to avoid 0 - start_range = 1000 * (depth_percent + 1) * id - end_range = start_range + start_range + gen_context_length = context_length if is_exact_context_length is True else context_length - random.randint(0, 700) - keys_in_train_set = get_keys_in_train_set() + # NOTE: depth_percent + 1 to avoid 0 + RANGE = 500 + start_range = 30 * (depth_percent + 1) * id + end_range = start_range + RANGE print( - f"Generating prompts for context length: {context_length} and depth percent: {depth_percent} and id: {id} \n" + f"Generating prompts for context length: {gen_context_length} (original {context_length}) and depth percent: {depth_percent} and id: {id} \n" ) print(f"start_range: {start_range}, end_range: {end_range} \n") + tokenizer = AutoTokenizer.from_pretrained(tokenizer_path) + def generate_dataset(): - # num_prompts = 1700 - num_prompts = 5 - # soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." soft_prompt = "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on." - # context_lengths = [ - # 32768, - # ] - # depth_percents = np.linspace(0, 100, num=21) - dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} + dataset_dict = { + "id": [], + "prompt": [], + "answer": [], + "context_length": [], + "num_tokens": [], + "depth_percent": [], + } generated_ids = set() generated_pass_keys = set() - # for context_length in context_lengths: - # print(f"Generating prompts for context length: {context_length} \n") - # for depth_percent in depth_percents: for i in range(num_prompts): print(f"generating prompt {i} \n") while True: pass_key = random.randint(start_range, end_range) - if pass_key not in keys_in_train_set and pass_key not in generated_pass_keys: + if pass_key not in generated_pass_keys: generated_pass_keys.add(pass_key) break needle_prompt = f". The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " + # retrieval_question = f"What is the pass key? The pass key is {pass_key}" retrieval_question = "What is the pass key? The pass key is " prompt = generate_needle_in_haystack_test( - pass_key, - needle_prompt, - haystack_dir, - soft_prompt, - retrieval_question, - context_length, - depth_percent, + needle=pass_key, + needle_prompt=needle_prompt, + soft_prompt=soft_prompt, + retrieval_question=retrieval_question, + context_length=gen_context_length, + depth_percent=depth_percent, + tokenizer=tokenizer, + is_padding=is_padding, ) while True: @@ -213,6 +224,7 @@ def generate_dataset(): dataset_dict["prompt"].append(prompt) dataset_dict["answer"].append(pass_key) dataset_dict["context_length"].append(context_length) + dataset_dict["num_tokens"].append(token_length(tokenizer, prompt)) dataset_dict["depth_percent"].append(depth_percent) dataset = Dataset.from_dict(dataset_dict) @@ -223,6 +235,7 @@ def generate_dataset(): # Save the dataset to disk dataset.save_to_disk( - f"/fsx/phuc/projects/nanotron/examples/infinite-context-length/needle_eval_datasets/needle_eval_ctx_len_32768_and_depth_{depth_percent}_and_id_{id}" + f"/fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/eval_data/needle_eval_and_{context_length}_ctx_and_depth_{depth_percent}_and_id_{id}" ) - # dataset.push_to_hub("nanotron/needle_in_a_hay_stack_finetuning_dataset") + if is_push_to_hub: + dataset.push_to_hub("nanotron/llama3-16k-passkey-retrieval-eval") diff --git a/examples/infinite-context-length/generate_evals.py b/examples/infinite-context-length/generate_evals.py deleted file mode 100644 index 4286624d..00000000 --- a/examples/infinite-context-length/generate_evals.py +++ /dev/null @@ -1,593 +0,0 @@ -import glob -import os - - -def generate_needle_in_haystack_test( - needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent -): - def read_context_files(): - context = "" - base_dir = os.path.abspath(os.path.dirname(__file__)) # Package directory - - while len(context) < context_length: - for file in glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")): - with open(file, "r") as f: - context += f.read() - return context - - def insert_needle(context): - if depth_percent == 100: - # If depth percent is 100, place the needle at the end - new_context = context[: context_length - len(needle)] + needle - else: - # Get the position to insert the needle - insertion_point = int(context_length * (depth_percent / 100)) - - # Find the nearest period to the insertion point - while context[insertion_point] != "." and insertion_point > 0: - insertion_point -= 1 - - # Insert the needle at the appropriate position - new_context = context[:insertion_point] + needle + context[insertion_point:context_length] - - return new_context - - # Load up the haystack context - context = read_context_files() - - # Truncate the context to the desired context length - context = context[:context_length] - - # Insert the needle into the context at the specified depth percent - context_with_needle = insert_needle(context) - - # Generate the prompt using the context with the needle - prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" - - return prompt, needle - - -# # Working example -haystack_dir = "./" - -import random -import uuid - -import numpy as np -from datasets import Dataset - - -def generate_dataset(): - num_prompts = 100 - soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." - context_lengths = [ - 1024, - 2048, - 4096, - 8192, - 16384, - 32768, - # 65536, - # 131072, - # 262144, - # 524288, - # 1048576, - ] - depth_percents = np.linspace(0, 100, num=21) - - dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} - generated_ids = set() - - for context_length in context_lengths: - print(f"Generating prompts for context length: {context_length} \n") - for depth_percent in depth_percents: - for _ in range(num_prompts): - pass_key = random.randint(10000, 50000) - needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " - retrieval_question = "What is the pass key? The pass key is " - - prompt, _ = generate_needle_in_haystack_test( - needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent - ) - # answer = f"The pass key is {pass_key}" - - while True: - text_id = str(uuid.uuid4()) - if text_id not in generated_ids: - generated_ids.add(text_id) - break - - dataset_dict["id"].append(text_id) - dataset_dict["prompt"].append(prompt) - dataset_dict["answer"].append(pass_key) - dataset_dict["context_length"].append(context_length) - dataset_dict["depth_percent"].append(depth_percent) - - dataset = Dataset.from_dict(dataset_dict) - return dataset - - -# Generate the dataset -dataset = generate_dataset() - -# Save the dataset to disk -dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") -dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") - - -############################################################################################################ - - -# import glob -# import os -# import random -# import uuid - -# import numpy as np -# from datasets import Dataset -# from transformers import AutoTokenizer - - -# if __name__ == "__main__": -# def generate_needle_in_haystack_test( -# needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent -# ): -# def read_context_files(): -# context = "" -# base_dir = os.path.abspath(os.path.dirname(__file__)) # Package directory - -# while len(tokenizer.encode(context)) < context_length: -# for file in glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")): -# with open(file, "r") as f: -# context += f.read() -# return context - -# def insert_needle(context): -# if depth_percent == 100: -# # If depth percent is 100, place the needle at the end -# new_context = context[: context_length - len(tokenizer.encode(needle))] + needle -# else: -# # Get the position to insert the needle -# insertion_point = int(context_length * (depth_percent / 100)) - -# # Find the nearest period to the insertion point -# while context[insertion_point] != "." and insertion_point > 0: -# insertion_point -= 1 - -# # Insert the needle at the appropriate position -# new_context = context[:insertion_point] + needle + context[insertion_point:context_length] - -# return new_context - -# # Load up the haystack context -# context = read_context_files() - -# # Truncate the context to the desired context length -# context = tokenizer.decode(tokenizer.encode(context)[:context_length]) - -# # Insert the needle into the context at the specified depth percent -# context_with_needle = insert_needle(context) - -# # Generate the prompt using the context with the needle -# prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" - -# return prompt, needle - -# # Working example -# haystack_dir = "./" - -# # Load the tokenizer -# tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") - - -# def generate_dataset(): -# num_prompts = 1 -# soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." -# context_lengths = [ -# # 1024, -# # 2048, -# # 4096, -# # 8192, -# # 16384, -# 32768, -# # 65536, -# # 131072, -# # 262144, -# # 524288, -# # 1048576, -# ] -# depth_percents = np.linspace(0, 100, num=21) - -# dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} -# generated_ids = set() - -# for context_length in context_lengths: -# print(f"Generating prompts for context length: {context_length} \n") -# for depth_percent in depth_percents: -# for _ in range(num_prompts): -# pass_key = random.randint(10000, 50000) -# needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " -# retrieval_question = f"What is the pass key? The pass key is " - -# prompt, _ = generate_needle_in_haystack_test( -# needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent -# ) - -# while True: -# text_id = str(uuid.uuid4()) -# if text_id not in generated_ids: -# generated_ids.add(text_id) -# break - -# dataset_dict["id"].append(text_id) -# dataset_dict["prompt"].append(prompt) -# dataset_dict["answer"].append(pass_key) -# dataset_dict["context_length"].append(context_length) -# dataset_dict["depth_percent"].append(depth_percent) - -# dataset = Dataset.from_dict(dataset_dict) -# return dataset - - -# # Generate the dataset -# dataset = generate_dataset() - -# # Save the dataset to disk -# dataset.save_to_disk("needle_in_a_hay_stack_finetuning_dataset") -# dataset.push_to_hub("nanotron/needle_in_a_hay_stack_finetuning_dataset") - - -############################################################################################################ - -# import glob -# import os -# import random -# import uuid - -# import numpy as np -# from datasets import Dataset -# from transformers import AutoTokenizer - -# if __name__ == "__main__": -# def generate_needle_in_haystack_test( -# needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent -# ): -# def read_context_files(): -# context = "" -# base_dir = os.path.abspath(os.path.dirname(__file__)) # Package directory -# files = glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")) -# file_index = 0 - -# while len(tokenizer.encode(f"{soft_prompt} {context} {needle} \n\n{retrieval_question}")) < context_length: -# with open(files[file_index], "r") as f: -# context += f.read() -# file_index = (file_index + 1) % len(files) - -# return context - -# def insert_needle(context): -# if depth_percent == 100: -# # If depth percent is 100, place the needle at the end -# new_context = context[: -len(needle)] + needle -# else: -# # Get the position to insert the needle -# insertion_point = int(len(context) * (depth_percent / 100)) - -# # Find the nearest period to the insertion point -# while context[insertion_point] != "." and insertion_point > 0: -# insertion_point -= 1 - -# # Insert the needle at the appropriate position -# new_context = context[:insertion_point] + needle + context[insertion_point:] - -# return new_context - -# # Load up the haystack context -# context = read_context_files() - -# # Insert the needle into the context at the specified depth percent -# context_with_needle = insert_needle(context) - -# # Generate the prompt using the context with the needle -# prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" - -# # Truncate the prompt to the desired context length -# prompt = tokenizer.decode(tokenizer.encode(prompt)[:context_length]) - -# return prompt, needle - - -# # Working example -# haystack_dir = "./" - -# # Load the tokenizer -# tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") - - -# def generate_dataset(): -# num_prompts = 1 -# soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." -# context_lengths = [ -# # 1024, -# # 2048, -# # 4096, -# # 8192, -# # 16384, -# 32768, -# # 65536, -# # 131072, -# # 262144, -# # 524288, -# # 1048576, -# ] -# depth_percents = np.linspace(0, 100, num=21) - -# dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} -# generated_ids = set() - -# for context_length in context_lengths: -# print(f"Generating prompts for context length: {context_length} \n") -# for depth_percent in depth_percents: -# for _ in range(num_prompts): -# pass_key = random.randint(10000, 50000) -# needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " -# retrieval_question = f"What is the pass key? The pass key is " - -# prompt, _ = generate_needle_in_haystack_test( -# needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent -# ) - -# while True: -# text_id = str(uuid.uuid4()) -# if text_id not in generated_ids: -# generated_ids.add(text_id) -# break - -# dataset_dict["id"].append(text_id) -# dataset_dict["prompt"].append(prompt) -# dataset_dict["answer"].append(pass_key) -# dataset_dict["context_length"].append(context_length) -# dataset_dict["depth_percent"].append(depth_percent) - -# dataset = Dataset.from_dict(dataset_dict) -# return dataset - - -# # Generate the dataset -# dataset = generate_dataset() - -# # Save the dataset to disk -# dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") -# dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") - - -# import glob -# import os -# import random -# import uuid - -# import numpy as np -# from datasets import Dataset -# from transformers import AutoTokenizer - -# if __name__ == "__main__": -# def generate_needle_in_haystack_test( -# needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent -# ): -# def read_context_files(): -# base_dir = os.path.abspath(os.path.dirname(__file__)) # Package directory -# files = glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")) -# file_contents = [] -# for file in files: -# with open(file, "r") as f: -# file_contents.append(f.read()) -# return file_contents - -# def insert_needle(context): -# if depth_percent == 100: -# # If depth percent is 100, place the needle at the end -# new_context = context[: -len(needle)] + needle -# else: -# # Get the position to insert the needle -# insertion_point = int(len(context) * (depth_percent / 100)) - -# # Find the nearest period to the insertion point -# while context[insertion_point] != "." and insertion_point > 0: -# insertion_point -= 1 - -# # Insert the needle at the appropriate position -# new_context = context[:insertion_point] + needle + context[insertion_point:] - -# return new_context - -# # Load up the haystack context -# file_contents = read_context_files() -# context = "".join(file_contents) - -# # Calculate the number of tokens for soft_prompt and retrieval_question -# soft_prompt_tokens = len(tokenizer.encode(soft_prompt)) -# retrieval_question_tokens = len(tokenizer.encode(retrieval_question)) - -# # Calculate the remaining tokens for the context -# remaining_tokens = context_length - soft_prompt_tokens - retrieval_question_tokens - -# # Repeat the context to make it long enough -# repeated_context = (context * ((remaining_tokens // len(tokenizer.encode(context))) + 1))[:remaining_tokens] - -# # Insert the needle into the repeated context at the specified depth percent -# context_with_needle = insert_needle(repeated_context) - -# # Generate the prompt using the context with the needle -# prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" - -# return prompt, needle - - -# # Working example -# haystack_dir = "./" - -# # Load the tokenizer -# tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") - - -# def generate_dataset(): -# num_prompts = 1 -# soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." -# context_lengths = [ -# # 1024, -# # 2048, -# # 4096, -# # 8192, -# # 16384, -# 32768, -# # 65536, -# # 131072, -# # 262144, -# # 524288, -# # 1048576, -# ] -# depth_percents = np.linspace(0, 100, num=21) - -# dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} -# generated_ids = set() - -# for context_length in context_lengths: -# print(f"Generating prompts for context length: {context_length} \n") -# for depth_percent in depth_percents: -# for _ in range(num_prompts): -# pass_key = random.randint(10000, 50000) -# needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " -# retrieval_question = f"What is the pass key? The pass key is " - -# prompt, _ = generate_needle_in_haystack_test( -# needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent -# ) - -# while True: -# text_id = str(uuid.uuid4()) -# if text_id not in generated_ids: -# generated_ids.add(text_id) -# break - -# dataset_dict["id"].append(text_id) -# dataset_dict["prompt"].append(prompt) -# dataset_dict["answer"].append(pass_key) -# dataset_dict["context_length"].append(context_length) -# dataset_dict["depth_percent"].append(depth_percent) - -# dataset = Dataset.from_dict(dataset_dict) -# return dataset - - -# # Generate the dataset -# dataset = generate_dataset() - -# # Save the dataset to disk -# dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") -# dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") - -import glob -import os -import random -import uuid - -import numpy as np -from datasets import Dataset -from transformers import AutoTokenizer - - -def token_length(tokenizer, text): - return len(tokenizer.encode(text)[:-1]) # -1 to exclude the EOS token - - -def read_context_files(tokenizer, soft_prompt, retrieval_question, context_length): - context = "" - base_dir = os.path.abspath(os.path.dirname(__file__)) - files = glob.glob(os.path.join(base_dir, haystack_dir, "*.txt")) - file_index = 0 - - target_context_length = ( - context_length - token_length(tokenizer, soft_prompt) - token_length(tokenizer, retrieval_question) - ) - - while token_length(tokenizer, context) < target_context_length: - with open(files[file_index], "r") as f: - context += f.read() - file_index = (file_index + 1) % len(files) - - return context - - -def insert_needle(context, needle): - # Get the position to insert the needle - insertion_point = random.randint(0, len(context)) - len(needle) - - # Insert the needle at the appropriate position - new_context = context[:insertion_point] + needle + context[insertion_point:] - - return new_context - - -def generate_needle_in_haystack_test( - needle, haystack_dir, soft_prompt: str, retrieval_question, context_length, depth_percent -): - # Load up the haystack context - tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") - context = read_context_files(tokenizer, soft_prompt, retrieval_question, context_length) - - # Insert the needle into the context at the specified depth percent - context_with_needle = insert_needle(context, needle) - - # Generate the prompt using the context with the needle - prompt = f"{soft_prompt} {context_with_needle} \n\n{retrieval_question}" - - return prompt, needle - - -if __name__ == "__main__": - haystack_dir = "./" - - def generate_dataset(): - num_prompts = 1 - soft_prompt = "There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there." - context_lengths = [ - 32768, - ] - depth_percents = np.linspace(0, 100, num=21) - - dataset_dict = {"id": [], "prompt": [], "answer": [], "context_length": [], "depth_percent": []} - generated_ids = set() - - for context_length in context_lengths: - print(f"Generating prompts for context length: {context_length} \n") - for depth_percent in depth_percents: - for _ in range(num_prompts): - pass_key = random.randint(10000, 50000) - needle = f"The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " - retrieval_question = "What is the pass key? The pass key is " - - prompt, _ = generate_needle_in_haystack_test( - needle, haystack_dir, soft_prompt, retrieval_question, context_length, depth_percent - ) - - while True: - text_id = str(uuid.uuid4()) - if text_id not in generated_ids: - generated_ids.add(text_id) - break - - dataset_dict["id"].append(text_id) - dataset_dict["prompt"].append(prompt) - dataset_dict["answer"].append(pass_key) - dataset_dict["context_length"].append(context_length) - dataset_dict["depth_percent"].append(depth_percent) - - dataset = Dataset.from_dict(dataset_dict) - return dataset - - # Generate the dataset - dataset = generate_dataset() - - # Save the dataset to disk - dataset.save_to_disk("needle_in_a_hay_stack_eval_dataset") - dataset.push_to_hub("nanotron/needle_in_a_hay_stack_eval_dataset") From dcbe86e83d99749ec0d6d49209c1d66347d71345 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Thu, 20 Jun 2024 07:29:19 +0000 Subject: [PATCH 33/43] refactor for generating finetuning data and run evals --- .../infinite-context-length/generate_data.py | 45 ++++++++++++++----- examples/infinite-context-length/run_evals.py | 17 ------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/examples/infinite-context-length/generate_data.py b/examples/infinite-context-length/generate_data.py index 1ea1f051..e687d706 100644 --- a/examples/infinite-context-length/generate_data.py +++ b/examples/infinite-context-length/generate_data.py @@ -4,17 +4,13 @@ import random import uuid -from datasets import Dataset +from datasets import Dataset, load_dataset from transformers import AutoTokenizer PROMPT = "{} {}. \n\n{}" -def get_keys_in_train_set(): - from datasets import load_dataset - - dataset = load_dataset("nanotron/needle_32k_finetuning_dataset") - +def get_keys_in_train_set(dataset): unique_answers = set() for split in dataset.keys(): for example in dataset[split]: @@ -142,6 +138,9 @@ def get_args(): parser.add_argument("--is_push_to_hub", type=bool, default=False) parser.add_argument("--is_exact_context_length", type=int, default=1) # 1 is True, 0 is False parser.add_argument("--is_padding", type=int, default=1) # 1 is True, 0 is False + parser.add_argument("--is_eval", type=int, default=1) # 1 is True, 0 is False + parser.add_argument("--check_key_in_dataset", type=str, default=None) # 1 is True, 0 is False + parser.add_argument("--save_path", type=str, required=True) # 1 is True, 0 is False return parser.parse_args() @@ -161,8 +160,23 @@ def get_args(): # is_exact_context_length = args.is_exact_context_length is_exact_context_length = False if args.is_exact_context_length == 0 else True is_padding = False if args.is_padding == 0 else True + is_eval = False if args.is_eval == 0 else True + check_key_in_dataset = args.check_key_in_dataset + save_path = args.save_path + + assert save_path is not None - gen_context_length = context_length if is_exact_context_length is True else context_length - random.randint(0, 700) + if check_key_in_dataset is not None: + eval_dataset = load_dataset(check_key_in_dataset) + eval_keys = get_keys_in_train_set(eval_dataset) + + if context_length >= 2000: + # NOTE: don't minus short context + gen_context_length = ( + context_length if is_exact_context_length is True else context_length - random.randint(0, 700) + ) + else: + gen_context_length = context_length # NOTE: depth_percent + 1 to avoid 0 RANGE = 500 @@ -196,12 +210,19 @@ def generate_dataset(): while True: pass_key = random.randint(start_range, end_range) if pass_key not in generated_pass_keys: + if check_key_in_dataset is not None: + if str(pass_key) in eval_keys: + continue + generated_pass_keys.add(pass_key) break needle_prompt = f". The pass key is {pass_key}. Remember it. {pass_key} is the pass key. " - # retrieval_question = f"What is the pass key? The pass key is {pass_key}" - retrieval_question = "What is the pass key? The pass key is " + + if is_eval is True: + retrieval_question = "What is the pass key? The pass key is " + else: + retrieval_question = f"What is the pass key? The pass key is {pass_key}." prompt = generate_needle_in_haystack_test( needle=pass_key, @@ -235,7 +256,7 @@ def generate_dataset(): # Save the dataset to disk dataset.save_to_disk( - f"/fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/eval_data/needle_eval_and_{context_length}_ctx_and_depth_{depth_percent}_and_id_{id}" + f"{save_path}/needle_finetune_data_and_{context_length}_ctx_and_depth_{depth_percent}_and_id_{id}" ) - if is_push_to_hub: - dataset.push_to_hub("nanotron/llama3-16k-passkey-retrieval-eval") + # if is_push_to_hub: + # dataset.push_to_hub("nanotron/llama3-16k-passkey-retrieval-eval") diff --git a/examples/infinite-context-length/run_evals.py b/examples/infinite-context-length/run_evals.py index 98f18e20..90032b2e 100644 --- a/examples/infinite-context-length/run_evals.py +++ b/examples/infinite-context-length/run_evals.py @@ -2815,23 +2815,6 @@ def main(): dataset = dataset.filter(lambda x: x["context_length"] == 32768 and x["depth_percent"] == depth_percent) df = df.filter(lambda x: x["context_length"] == 32768 and x["depth_percent"] == depth_percent) - # # Filter and select the first 2 samples for each unique 'depth_percent' value - # dataset = dataset.group_by("depth_percent").select(keep_from_disk=True, indices=lambda group: group[:2]) - # df = df.group_by("depth_percent").select(keep_from_disk=True, indices=lambda group: group[:2]) - - # # NOTE: only take 2 sample for each unique depth_percent - # dataset = dataset.groupby('depth_percent').head(2) - # df = df.groupby('depth_percent').head(2) - - # dataset = dataset.select(range(len(dataset)-1, -1, -1)) - # df = df.select(range(len(df)-1, -1, -1)) - - # nOTE: only take 10 samples - # dataset = dataset.select(range(10)) - # df = df.select(range(10)) - - # NOTE: now reverse these dataset - dataloader = torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False) df.set_format("pandas") From a6b8b5eca6edd79e42356f23b46f0004f123dad8 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 25 Jun 2024 06:38:39 +0000 Subject: [PATCH 34/43] add debugging --- .../data/exp34/debug_weights.py | 310 ++++++++++++++++++ 1 file changed, 310 insertions(+) create mode 100644 examples/infinite-context-length/data/exp34/debug_weights.py diff --git a/examples/infinite-context-length/data/exp34/debug_weights.py b/examples/infinite-context-length/data/exp34/debug_weights.py new file mode 100644 index 00000000..e7d3234b --- /dev/null +++ b/examples/infinite-context-length/data/exp34/debug_weights.py @@ -0,0 +1,310 @@ +import os + +import gradio as gr +import numpy as np +import torch + + +def load_folder_structure(root_dir): + folder_structure = {} + for step_dir in sorted(os.listdir(root_dir), key=lambda x: int(x)): + step = int(step_dir) + step_path = os.path.join(root_dir, step_dir) + folder_structure[step] = [] + for folder in os.listdir(step_path): + if os.path.isdir(os.path.join(step_path, folder)): + folder_structure[step].append(folder) + return folder_structure + + +def load_tensors(root_dir, selected_steps, selected_folders): + tensors = {} + for step in selected_steps: + step_dir = os.path.join(root_dir, str(step)) + for folder in selected_folders: + folder_path = os.path.join(step_dir, folder) + if os.path.isdir(folder_path): + for tensor_file in os.listdir(folder_path): + tensor_name = os.path.splitext(tensor_file)[0] + tensor_path = os.path.join(folder_path, tensor_file) + + # Load the tensor + tensor = torch.load(tensor_path) + + # Calculate mean and standard deviation + if not isinstance(tensor, torch.Tensor): + continue + + mean = tensor.mean().item() + std = tensor.std().item() + + if tensor_name not in tensors: + tensors[tensor_name] = {"steps": [], "means": [], "stds": []} + + tensors[tensor_name]["steps"].append(step) + tensors[tensor_name]["means"].append(mean) + tensors[tensor_name]["stds"].append(std) + return tensors + + +def create_gradio_interface(): + def update_steps(root_dir): + folder_structure = load_folder_structure(root_dir) + steps = list(folder_structure.keys()) + return gr.Dropdown(choices=steps, multiselect=True, value=steps) + + def update_folders(root_dir, selected_steps): + folder_structure = load_folder_structure(root_dir) + folders = set() + for step in selected_steps: + folders.update(folder_structure[step]) + return gr.Dropdown(choices=list(folders), multiselect=True, value=list(folders)) + + def update_tensor_names(root_dir, selected_steps, selected_folders): + tensors = load_tensors(root_dir, selected_steps, selected_folders) + tensor_names = list(tensors.keys()) + default_tensor = np.random.choice(tensor_names) if tensor_names else None + return gr.Dropdown(choices=tensor_names, multiselect=True, value=[default_tensor] if default_tensor else []) + + def update_line_plot(root_dir, selected_steps, selected_folders, selected_tensors, show_std): + tensors = load_tensors(root_dir, selected_steps, selected_folders) + + fig = go.Figure() + + all_means = [] + for tensor_name in selected_tensors: + if tensor_name in tensors: + data = tensors[tensor_name] + steps = data["steps"] + means = data["means"] + stds = data["stds"] + all_means.extend(means) + + fig.add_trace( + go.Scatter( + x=steps, + y=means, + mode="lines+markers", + name=tensor_name, + line={"width": 2}, + hovertemplate="Step: %{x}
Mean: %{y:.4f}
Std: %{text:.4f}", + text=stds, + ) + ) + + if show_std: + fig.add_trace( + go.Scatter( + x=steps + steps[::-1], + y=[m + s for m, s in zip(means, stds)] + [m - s for m, s in zip(means[::-1], stds[::-1])], + fill="toself", + fillcolor="rgba(0,100,80,0.2)", + line={"color": "rgba(255,255,255,0)"}, + hoverinfo="skip", + showlegend=False, + name=tensor_name + " Std Dev", + ) + ) + + fig.update_layout( + title="Tensor Means and Variances Across Training Steps", + xaxis_title="Training Step", + yaxis_title="Mean of Tensors", + hovermode="x unified", + legend_title="Tensor Names", + ) + + # Adjust y-axis range to focus on the trend + if all_means: + y_mean = np.mean(all_means) + y_std = np.std(all_means) + y_range = [y_mean - 3 * y_std, y_mean + 3 * y_std] + fig.update_yaxes(range=y_range) + + return fig + + import plotly.graph_objects as go + + def update_plots(root_dir, selected_steps, selected_folders, selected_tensors, exp_min, exp_max): + if not selected_tensors: + return None, None, "No tensors selected", None + + tensors = load_tensors(root_dir, selected_steps, selected_folders) + + all_values = {} + for step in selected_steps: + all_values[step] = [] + for tensor_name in selected_tensors: + if tensor_name in tensors: + step_dir = os.path.join(root_dir, str(step)) + for folder in selected_folders: + tensor_path = os.path.join(step_dir, folder, f"{tensor_name}.pt") + if os.path.exists(tensor_path): + tensor = torch.load(tensor_path) + all_values[step].extend(tensor.flatten().tolist()) + + if not all_values: + return None, None, "No data available", None + + # Create histogram with slider + hist_fig = go.Figure() + + max_hist_value = 0 + for step in selected_steps: + values = np.array(all_values[step]) + hist, bin_edges = np.histogram(values, bins=50) + hist_fig.add_trace(go.Bar(x=bin_edges[:-1], y=hist, name=f"Step {step}", visible=False)) + max_hist_value = max(max_hist_value, np.max(hist)) + + # Make the first trace visible + hist_fig.data[0].visible = True + + # Create and add slider + steps = [] + for i, step in enumerate(selected_steps): + step = { + "method": "update", + "args": [ + {"visible": [False] * len(hist_fig.data)}, + {"title": f"Distribution of Tensor Values (Step {step})"}, + ], + "label": str(step), + } + step["args"][0]["visible"][i] = True # Toggle i'th trace to "visible" + steps.append(step) + + sliders = [{"active": 0, "currentvalue": {"prefix": "Step: "}, "pad": {"t": 50}, "steps": steps}] + + hist_fig.update_layout( + sliders=sliders, + xaxis_title="Tensor Values", + yaxis_title="Frequency", + bargap=0.1, + ) + + # Auto-zoom for histogram + all_values_flat = np.concatenate(list(all_values.values())) + q1, q3 = np.percentile(all_values_flat, [25, 75]) + iqr = q3 - q1 + lower_bound = q1 - 1.5 * iqr + upper_bound = q3 + 1.5 * iqr + hist_fig.update_yaxes(range=[0, max_hist_value * 1.1]) + hist_fig.update_xaxes(range=[lower_bound, upper_bound]) + + # Create scatter plot (unchanged) + scatter_fig = go.Figure() + for step, values in all_values.items(): + scatter_fig.add_trace( + go.Scatter( + x=np.arange(len(values)), + y=values, + mode="markers", + marker={"size": 2, "opacity": 0.5}, + name=f"Step {step}", + ) + ) + scatter_fig.update_layout( + title="Scatter Plot of Tensor Values", + xaxis_title="Index", + yaxis_title="Tensor Value", + ) + scatter_fig.update_yaxes(range=[lower_bound, upper_bound]) + + # Calculate percentages for the first step (you might want to adjust this) + first_step = selected_steps[0] + current_values = np.array(all_values[first_step]) + total = len(current_values) + within_range = np.sum((current_values >= exp_min) & (current_values <= exp_max)) + below_min = np.sum(current_values < exp_min) + above_max = np.sum(current_values > exp_max) + + percentage_text = f""" + Step {first_step}: + Within range [{exp_min}, {exp_max}]: {within_range/total*100:.2f}% + Below {exp_min}: {below_min/total*100:.2f}% + Above {exp_max}: {above_max/total*100:.2f}% + """ + + # Create distribution table data for the first step + hist, bin_edges = np.histogram(current_values, bins=50) + table_data = [] + for i in range(len(hist)): + range_start = bin_edges[i] + range_end = bin_edges[i + 1] + count = hist[i] + percentage = count / total * 100 + table_data.append([f"{range_start:.4f} - {range_end:.4f}", f"{percentage:.2f}%", f"{count}"]) + + return hist_fig, scatter_fig, percentage_text, table_data + + with gr.Blocks() as iface: + gr.Markdown("# Neural Networks Debugging Tool") + + with gr.Row(): + root_dir_input = gr.Textbox(label="Root Directory") + + with gr.Row(): + step_dropdown = gr.Dropdown(multiselect=True, label="Select Training Steps") + + with gr.Row(): + folder_dropdown = gr.Dropdown(multiselect=True, label="Select Folders") + + with gr.Row(): + tensor_dropdown = gr.Dropdown(multiselect=True, label="Select Tensors to Display") + + with gr.Row(): + show_std = gr.Checkbox(label="Show Standard Deviation", value=True) + update_line_plot_button = gr.Button("Update Line Plot") + + with gr.Row(): + line_plot_output = gr.Plot() + + with gr.Row(): + with gr.Column(scale=1): + exp_min = gr.Number(label="Expected Minimum") + exp_max = gr.Number(label="Expected Maximum") + percentage_output = gr.Textbox(label="Value Distribution") + update_plots_button = gr.Button("Update Plots") + with gr.Column(scale=2): + with gr.Tabs(): + with gr.TabItem("Distribution of Tensor Values"): + histogram_output = gr.Plot() + with gr.TabItem("Scatter Plot of Tensor Values"): + scatter_output = gr.Plot() + + with gr.Row(): + distribution_table = gr.Dataframe(headers=["Range", "Percentage", "Count"], label="Distribution Table") + + root_dir_input.change(fn=update_steps, inputs=[root_dir_input], outputs=[step_dropdown]) + + step_dropdown.change(fn=update_folders, inputs=[root_dir_input, step_dropdown], outputs=[folder_dropdown]) + + folder_dropdown.change( + fn=update_tensor_names, inputs=[root_dir_input, step_dropdown, folder_dropdown], outputs=[tensor_dropdown] + ) + + update_line_plot_button.click( + fn=update_line_plot, + inputs=[root_dir_input, step_dropdown, folder_dropdown, tensor_dropdown, show_std], + outputs=[line_plot_output], + ) + + # Add this new event handler + show_std.change( + fn=update_line_plot, + inputs=[root_dir_input, step_dropdown, folder_dropdown, tensor_dropdown, show_std], + outputs=[line_plot_output], + ) + + update_plots_button.click( + fn=update_plots, + inputs=[root_dir_input, step_dropdown, folder_dropdown, tensor_dropdown, exp_min, exp_max], + outputs=[histogram_output, scatter_output, percentage_output, distribution_table], + ) + + return iface + + +# Usage +iface = create_gradio_interface() +iface.launch(share=True, debug=True) From 15fd9dd109e0fb23958d50ea88b723a0db093c72 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Tue, 25 Jun 2024 11:17:09 +0000 Subject: [PATCH 35/43] add l2 nor, kurtosis, abmax, weight update magnitude --- .../data/exp34/debug_weights.py | 317 +++++++++++++++--- 1 file changed, 269 insertions(+), 48 deletions(-) diff --git a/examples/infinite-context-length/data/exp34/debug_weights.py b/examples/infinite-context-length/data/exp34/debug_weights.py index e7d3234b..0df7df28 100644 --- a/examples/infinite-context-length/data/exp34/debug_weights.py +++ b/examples/infinite-context-length/data/exp34/debug_weights.py @@ -2,9 +2,17 @@ import gradio as gr import numpy as np +import plotly.graph_objects as go import torch +def calculate_kurtosis(tensor): + s = torch.sqrt(torch.mean(tensor**2, dim=0)) + m2 = torch.mean(s**2) + m4 = torch.mean(s**4) + return (m4 / (m2**2)).item() + + def load_folder_structure(root_dir): folder_structure = {} for step_dir in sorted(os.listdir(root_dir), key=lambda x: int(x)): @@ -17,8 +25,8 @@ def load_folder_structure(root_dir): return folder_structure -def load_tensors(root_dir, selected_steps, selected_folders): - tensors = {} +def get_tensor_names(root_dir, selected_steps, selected_folders): + tensor_names = set() for step in selected_steps: step_dir = os.path.join(root_dir, str(step)) for folder in selected_folders: @@ -26,24 +34,43 @@ def load_tensors(root_dir, selected_steps, selected_folders): if os.path.isdir(folder_path): for tensor_file in os.listdir(folder_path): tensor_name = os.path.splitext(tensor_file)[0] - tensor_path = os.path.join(folder_path, tensor_file) + tensor_names.add(tensor_name) + return list(tensor_names) - # Load the tensor - tensor = torch.load(tensor_path) - # Calculate mean and standard deviation - if not isinstance(tensor, torch.Tensor): - continue - - mean = tensor.mean().item() - std = tensor.std().item() - - if tensor_name not in tensors: - tensors[tensor_name] = {"steps": [], "means": [], "stds": []} - - tensors[tensor_name]["steps"].append(step) - tensors[tensor_name]["means"].append(mean) - tensors[tensor_name]["stds"].append(std) +def load_selected_tensors(root_dir, selected_steps, selected_folders, selected_tensors): + tensors = {} + for step in selected_steps: + step_dir = os.path.join(root_dir, str(step)) + for folder in selected_folders: + folder_path = os.path.join(step_dir, folder) + if os.path.isdir(folder_path): + for tensor_name in selected_tensors: + tensor_file = f"{tensor_name}.pt" + tensor_path = os.path.join(folder_path, tensor_file) + if os.path.exists(tensor_path): + tensor = torch.load(tensor_path) + if isinstance(tensor, torch.Tensor): + mean = tensor.mean().item() + std = tensor.std().item() + l2_norm = torch.norm(tensor, p=2).item() + kurtosis = calculate_kurtosis(tensor) + abs_max = torch.abs(tensor).max().item() # Add absolute maximum calculation + if tensor_name not in tensors: + tensors[tensor_name] = { + "steps": [], + "means": [], + "stds": [], + "l2_norms": [], + "kurtosis": [], + "abs_max": [], + } + tensors[tensor_name]["steps"].append(step) + tensors[tensor_name]["means"].append(mean) + tensors[tensor_name]["stds"].append(std) + tensors[tensor_name]["l2_norms"].append(l2_norm) + tensors[tensor_name]["kurtosis"].append(kurtosis) + tensors[tensor_name]["abs_max"].append(abs_max) # Add absolute maximum to the dictionary return tensors @@ -61,13 +88,12 @@ def update_folders(root_dir, selected_steps): return gr.Dropdown(choices=list(folders), multiselect=True, value=list(folders)) def update_tensor_names(root_dir, selected_steps, selected_folders): - tensors = load_tensors(root_dir, selected_steps, selected_folders) - tensor_names = list(tensors.keys()) + tensor_names = get_tensor_names(root_dir, selected_steps, selected_folders) default_tensor = np.random.choice(tensor_names) if tensor_names else None return gr.Dropdown(choices=tensor_names, multiselect=True, value=[default_tensor] if default_tensor else []) - def update_line_plot(root_dir, selected_steps, selected_folders, selected_tensors, show_std): - tensors = load_tensors(root_dir, selected_steps, selected_folders) + def update_mean_variance_plot(root_dir, selected_steps, selected_folders, selected_tensors, show_std): + tensors = load_selected_tensors(root_dir, selected_steps, selected_folders, selected_tensors) fig = go.Figure() @@ -114,7 +140,6 @@ def update_line_plot(root_dir, selected_steps, selected_folders, selected_tensor legend_title="Tensor Names", ) - # Adjust y-axis range to focus on the trend if all_means: y_mean = np.mean(all_means) y_std = np.std(all_means) @@ -123,25 +148,199 @@ def update_line_plot(root_dir, selected_steps, selected_folders, selected_tensor return fig - import plotly.graph_objects as go + def update_l2_norm_plot(root_dir, selected_steps, selected_folders, selected_tensors): + tensors = load_selected_tensors(root_dir, selected_steps, selected_folders, selected_tensors) + + fig = go.Figure() + + all_l2_norms = [] + for tensor_name in selected_tensors: + if tensor_name in tensors: + data = tensors[tensor_name] + steps = data["steps"] + l2_norms = data["l2_norms"] + all_l2_norms.extend(l2_norms) + + fig.add_trace( + go.Scatter( + x=steps, + y=l2_norms, + mode="lines+markers", + name=tensor_name, + line={"width": 2}, + hovertemplate="Step: %{x}
L2 Norm: %{y:.4f}", + ) + ) + + fig.update_layout( + title="Tensor L2 Norms Across Training Steps", + xaxis_title="Training Step", + yaxis_title="L2 Norm of Tensors", + hovermode="x unified", + legend_title="Tensor Names", + ) + + if all_l2_norms: + y_mean = np.mean(all_l2_norms) + y_std = np.std(all_l2_norms) + y_range = [y_mean - 3 * y_std, y_mean + 3 * y_std] + fig.update_yaxes(range=y_range) + + return fig + + def update_kurtosis_plot(root_dir, selected_steps, selected_folders, selected_tensors): + tensors = load_selected_tensors(root_dir, selected_steps, selected_folders, selected_tensors) + + fig = go.Figure() + + all_kurtosis = [] + for tensor_name in selected_tensors: + if tensor_name in tensors: + data = tensors[tensor_name] + steps = data["steps"] + kurtosis = data["kurtosis"] + all_kurtosis.extend(kurtosis) + + fig.add_trace( + go.Scatter( + x=steps, + y=kurtosis, + mode="lines+markers", + name=tensor_name, + line={"width": 2}, + hovertemplate="Step: %{x}
Kurtosis: %{y:.4f}", + ) + ) + + fig.update_layout( + title="Tensor Kurtosis Across Training Steps", + xaxis_title="Training Step", + yaxis_title="Kurtosis of Tensors", + hovermode="x unified", + legend_title="Tensor Names", + ) + + if all_kurtosis: + y_mean = np.mean(all_kurtosis) + y_std = np.std(all_kurtosis) + y_range = [max(0, y_mean - 3 * y_std), y_mean + 3 * y_std] + fig.update_yaxes(range=y_range) + + return fig + + def update_abs_max_plot(root_dir, selected_steps, selected_folders, selected_tensors): + tensors = load_selected_tensors(root_dir, selected_steps, selected_folders, selected_tensors) + + fig = go.Figure() + + all_abs_max = [] + for tensor_name in selected_tensors: + if tensor_name in tensors: + data = tensors[tensor_name] + steps = data["steps"] + abs_max = data["abs_max"] + all_abs_max.extend(abs_max) + + fig.add_trace( + go.Scatter( + x=steps, + y=abs_max, + mode="lines+markers", + name=tensor_name, + line={"width": 2}, + hovertemplate="Step: %{x}
Absolute Max: %{y:.4f}", + ) + ) + + fig.update_layout( + title="Tensor Absolute Maximum Values Across Training Steps", + xaxis_title="Training Step", + yaxis_title="Absolute Maximum of Tensors", + hovermode="x unified", + legend_title="Tensor Names", + ) + + if all_abs_max: + y_mean = np.mean(all_abs_max) + y_std = np.std(all_abs_max) + y_range = [max(0, y_mean - 3 * y_std), y_mean + 3 * y_std] + fig.update_yaxes(range=y_range) + + return fig + + def update_weight_update_plot(root_dir, selected_steps, selected_folders, selected_tensors, learning_rate): + tensors = load_selected_tensors(root_dir, selected_steps, selected_folders, selected_tensors) + + fig = go.Figure() + all_magnitudes = [] + missing_grads = set() + + for tensor_name in selected_tensors: + if tensor_name.endswith(".weight"): + grad_name = tensor_name.replace(".weight", ".weight.grad") + if tensor_name in tensors and grad_name in tensors: + weight_data = tensors[tensor_name] + grad_data = tensors[grad_name] + + steps = weight_data["steps"] + weights = torch.tensor(weight_data["l2_norms"]) + grads = torch.tensor(grad_data["l2_norms"]) + + magnitudes = (grads * learning_rate) / weights + if isinstance(magnitudes, (float, int)): + all_magnitudes.append(magnitudes) + else: + all_magnitudes.extend(magnitudes.tolist()) + + fig.add_trace( + go.Scatter( + x=steps, + y=magnitudes if isinstance(magnitudes, (float, int)) else magnitudes.tolist(), + mode="lines+markers", + name=tensor_name, + line={"width": 2}, + hovertemplate="Step: %{x}
Magnitude: %{y:.2e}", + ) + ) + else: + if grad_name not in tensors: + missing_grads.add(grad_name) + + fig.update_layout( + title="Magnitude of Weight Updates Across Training Steps", + xaxis_title="Training Step", + yaxis_title="Magnitude of Weight Update", + hovermode="x unified", + legend_title="Tensor Names", + yaxis={"tickformat": ".2e", "exponentformat": "e"}, + ) + + if all_magnitudes: + y_mean = np.mean(all_magnitudes) + y_std = np.std(all_magnitudes) + y_range = [max(0, y_mean - 3 * y_std), y_mean + 3 * y_std] + fig.update_yaxes(range=y_range) + + notification = "" + if missing_grads: + notification = f"Please select the following gradients: {', '.join(missing_grads)}" + + return fig, notification def update_plots(root_dir, selected_steps, selected_folders, selected_tensors, exp_min, exp_max): if not selected_tensors: return None, None, "No tensors selected", None - tensors = load_tensors(root_dir, selected_steps, selected_folders) - all_values = {} for step in selected_steps: all_values[step] = [] for tensor_name in selected_tensors: - if tensor_name in tensors: - step_dir = os.path.join(root_dir, str(step)) - for folder in selected_folders: - tensor_path = os.path.join(step_dir, folder, f"{tensor_name}.pt") - if os.path.exists(tensor_path): - tensor = torch.load(tensor_path) - all_values[step].extend(tensor.flatten().tolist()) + step_dir = os.path.join(root_dir, str(step)) + for folder in selected_folders: + tensor_path = os.path.join(step_dir, folder, f"{tensor_name}.pt") + if os.path.exists(tensor_path): + tensor = torch.load(tensor_path) + all_values[step].extend(tensor.flatten().tolist()) if not all_values: return None, None, "No data available", None @@ -156,10 +355,8 @@ def update_plots(root_dir, selected_steps, selected_folders, selected_tensors, e hist_fig.add_trace(go.Bar(x=bin_edges[:-1], y=hist, name=f"Step {step}", visible=False)) max_hist_value = max(max_hist_value, np.max(hist)) - # Make the first trace visible hist_fig.data[0].visible = True - # Create and add slider steps = [] for i, step in enumerate(selected_steps): step = { @@ -170,7 +367,7 @@ def update_plots(root_dir, selected_steps, selected_folders, selected_tensors, e ], "label": str(step), } - step["args"][0]["visible"][i] = True # Toggle i'th trace to "visible" + step["args"][0]["visible"][i] = True steps.append(step) sliders = [{"active": 0, "currentvalue": {"prefix": "Step: "}, "pad": {"t": 50}, "steps": steps}] @@ -191,7 +388,7 @@ def update_plots(root_dir, selected_steps, selected_folders, selected_tensors, e hist_fig.update_yaxes(range=[0, max_hist_value * 1.1]) hist_fig.update_xaxes(range=[lower_bound, upper_bound]) - # Create scatter plot (unchanged) + # Create scatter plot scatter_fig = go.Figure() for step, values in all_values.items(): scatter_fig.add_trace( @@ -210,7 +407,7 @@ def update_plots(root_dir, selected_steps, selected_folders, selected_tensors, e ) scatter_fig.update_yaxes(range=[lower_bound, upper_bound]) - # Calculate percentages for the first step (you might want to adjust this) + # Calculate percentages for the first step first_step = selected_steps[0] current_values = np.array(all_values[first_step]) total = len(current_values) @@ -254,10 +451,22 @@ def update_plots(root_dir, selected_steps, selected_folders, selected_tensors, e with gr.Row(): show_std = gr.Checkbox(label="Show Standard Deviation", value=True) - update_line_plot_button = gr.Button("Update Line Plot") + update_line_plots_button = gr.Button("Update Line Plots") with gr.Row(): - line_plot_output = gr.Plot() + with gr.Tabs(): + with gr.TabItem("Mean and Variance"): + mean_variance_plot_output = gr.Plot() + with gr.TabItem("L2 Norm"): + l2_norm_plot_output = gr.Plot() + with gr.TabItem("Kurtosis"): + kurtosis_plot_output = gr.Plot() + with gr.TabItem("Absolute Maximum"): + abs_max_plot_output = gr.Plot() + with gr.TabItem("Weight Update Magnitude"): + weight_update_notification = gr.Textbox(label="Notification") + learning_rate = gr.Number(label="Learning Rate", value=0.001) + weight_update_plot_output = gr.Plot() with gr.Row(): with gr.Column(scale=1): @@ -283,17 +492,29 @@ def update_plots(root_dir, selected_steps, selected_folders, selected_tensors, e fn=update_tensor_names, inputs=[root_dir_input, step_dropdown, folder_dropdown], outputs=[tensor_dropdown] ) - update_line_plot_button.click( - fn=update_line_plot, + show_std.change( + fn=update_mean_variance_plot, inputs=[root_dir_input, step_dropdown, folder_dropdown, tensor_dropdown, show_std], - outputs=[line_plot_output], + outputs=[mean_variance_plot_output], ) - # Add this new event handler - show_std.change( - fn=update_line_plot, - inputs=[root_dir_input, step_dropdown, folder_dropdown, tensor_dropdown, show_std], - outputs=[line_plot_output], + update_line_plots_button.click( + fn=lambda *args: ( + update_mean_variance_plot(*args[:5]), + update_l2_norm_plot(*args[:4]), + update_kurtosis_plot(*args[:4]), + update_abs_max_plot(*args[:4]), + *update_weight_update_plot(*args[:4], args[5]), + ), + inputs=[root_dir_input, step_dropdown, folder_dropdown, tensor_dropdown, show_std, learning_rate], + outputs=[ + mean_variance_plot_output, + l2_norm_plot_output, + kurtosis_plot_output, + abs_max_plot_output, + weight_update_plot_output, + weight_update_notification, + ], ) update_plots_button.click( From 9ef1f4c2daf643a59b18c151cf2cd5c6c8717e26 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Fri, 28 Jun 2024 07:50:09 +0000 Subject: [PATCH 36/43] each segment in the attention layer uses the same balance factors --- src/nanotron/models/llama.py | 200 +++++++++++++++++++++++++++++------ 1 file changed, 169 insertions(+), 31 deletions(-) diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index c9dc5b15..6f7fbaf4 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -46,21 +46,29 @@ logger = logging.get_logger(__name__) -def compute_stas(tensor): +def compute_stas(tensor, log_tensor: bool = False, save_tensor: bool = False): if tensor is None: tensor = torch.zeros( 1, ) - return { - "mean": tensor.mean().item(), - # "std": tensor.std().item(), + logs = { + "mean": tensor.detach().mean().item(), + "std": tensor.detach().std().item(), # "var": tensor.var().item(), - # "norm": tensor.norm().item(), + "norm": tensor.norm().item(), # "min": tensor.min().item(), # "max": tensor.max().item(), - "amax": tensor.detach().cpu().abs().max().item(), + "amax": tensor.detach().abs().max().item(), } + # if log_tensor: + # import torchshow as ts + # import wandb + # data = tensor.detach().cpu().tolist() + # data = [[s] for s in data] + # logs["data"] = wandb.plot.histogram(wandb.Table(data=data, columns=["value"]), "values", title="DATA") + + return logs def convert_logs_to_flat_logs(logs, prefix): @@ -73,6 +81,72 @@ def convert_logs_to_flat_logs(logs, prefix): return flat_logs +def rotate_half(x): + """Rotates half the hidden dims of the input.""" + x1 = x[..., : x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2 :] + return torch.cat((-x2, x1), dim=-1) + + +### llama +class LlamaRotaryEmbedding(nn.Module): + def __init__(self, dim: int, end: int, theta: float = 500000.0): + super().__init__() + self.dim = dim + self.end = end + self.theta = theta + self.init_rotary_embeddings() + + def init_rotary_embeddings(self): + inv_freq = 1.0 / (self.theta ** (torch.arange(0, self.dim, 2, dtype=torch.float, device="cuda") / self.dim)) + self.register_buffer("inv_freq", inv_freq, persistent=False) + + @torch.no_grad() + def forward( + self, + x: torch.Tensor, # [batch_size, seq_length, num_heads, d_qk] + position_ids: Optional[torch.LongTensor], # [batch_size, seq_length] + ): + # x: [bs, num_attention_heads, seq_len, head_size] + # print("rotary") + inv_freq_expanded = self.inv_freq[None, :, None].float().expand(position_ids.shape[0], -1, 1) + position_ids_expanded = position_ids[:, None, :].float() + # Force float32 since bfloat16 loses precision on long contexts + # See https://github.com/huggingface/transformers/pull/29285 + device_type = x.device.type + device_type = device_type if isinstance(device_type, str) and device_type != "mps" else "cpu" + with torch.autocast(device_type=device_type, enabled=False): + freqs = (inv_freq_expanded.float() @ position_ids_expanded.float()).transpose(1, 2) + emb = torch.cat((freqs, freqs), dim=-1) + cos = emb.cos() + sin = emb.sin() + return cos.to(dtype=x.dtype), sin.to(dtype=x.dtype) + + +def apply_rotary_pos_emb(q, k, cos, sin, unsqueeze_dim=2): + """Applies Rotary Position Embedding to the query and key tensors. + Args: + q (`torch.Tensor`): The query tensor. + k (`torch.Tensor`): The key tensor. + cos (`torch.Tensor`): The cosine part of the rotary embedding. + sin (`torch.Tensor`): The sine part of the rotary embedding. + unsqueeze_dim (`int`, *optional*, defaults to 1): + The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and + sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note + that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and + k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes + cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have + the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2. + Returns: + `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding. + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + q_embed = (q * cos) + (rotate_half(q) * sin) + k_embed = (k * cos) + (rotate_half(k) * sin) + return q_embed, k_embed + + class RotaryEmbedding(nn.Module): def __init__(self, dim: int, end: int, theta: float = 10000.0): super().__init__() @@ -349,7 +423,17 @@ def __init__( contiguous_chunks=qkv_contiguous_chunks, ) # TODO(kunhao): We want to have only one version per device and not one version per layer. - self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings) + + if config.rope_interleaved: + self.rotary_embedding = RotaryEmbedding( + dim=self.d_qk, end=config.max_position_embeddings, theta=config.rope_theta + ) + else: + self.rotary_embedding = LlamaRotaryEmbedding( + dim=self.d_qk, end=config.max_position_embeddings, theta=config.rope_theta + ) + + # self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=config.max_position_embeddings) log_rank( f"self.rotary_embedding.end is {self.rotary_embedding.end}", logger=logger, @@ -359,7 +443,9 @@ def __init__( # self.rotary_embedding = RotaryEmbedding(dim=self.d_qk, end=2048) # NOTE: Only supported for training (TODO(fmom): position_ids not supported yet) - self.flash_rotary_embedding = FlashRotaryEmbedding(dim=self.d_qk, interleaved=True) + self.flash_rotary_embedding = FlashRotaryEmbedding( + dim=self.d_qk, interleaved=config.rope_interleaved, base=config.rope_theta + ) self.o_proj = TensorParallelRowLinear( config.num_attention_heads * self.d_qk, @@ -385,12 +471,16 @@ def __init__( self.segment_length = constants.CONFIG.infini_attention.segment_length # for 1024 context length device = self.o_proj.weight.device - dtype = self.o_proj.weight.dtype from nanotron.parallel.sharded_parameters import SplitConfig, create_sharded_parameter_from_config if constants.CONFIG.infini_attention.turn_on_memory is True: - balance_factors = nn.Parameter(torch.zeros(self.n_local_q_heads, device=device, dtype=dtype)) + + balance_factors = nn.Parameter( + torch.zeros(self.n_local_q_heads, device=device, dtype=torch.float32) + # torch.randn(self.n_local_q_heads, device=device, dtype=torch.float32).normal_(mean=0.0, std=1/math.sqrt(config.num_attention_heads)) + # torch.randn(self.n_local_q_heads, device=device, dtype=torch.float32).normal_(mean=0.0, std=1/math.sqrt(self.n_local_q_heads)) + ) self.balance_factors = create_sharded_parameter_from_config( parameter=balance_factors, pg=tp_pg, @@ -400,12 +490,12 @@ def __init__( ), ) - log_rank( - f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", - logger=logger, - level=logging.WARNING, - rank=0, - ) + log_rank( + f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", + logger=logger, + level=logging.WARNING, + rank=0, + ) def forward( self, @@ -415,6 +505,10 @@ def forward( ): hidden_states.shape[0] seq_len = hidden_states.shape[1] + # print(f"seq_len: {seq_len}") + + # if seq_len > 64: + # assert 1 == 1 if seq_len > self.segment_length: import math @@ -443,6 +537,34 @@ def forward( idx = 0 logs = {} + if constants.GLOBAL_STEP == 11 and constants.IS_RANK_TO_MONITOR is True: + assert 1 == 1 + + raw_global_weights = F.sigmoid(self.balance_factors) + + # raw_global_weights = F.tanh(self.balance_factors).abs() + # raw_global_weights = raw_global_weights * raw_global_weights.mean() + + # def sigmoid_range(x, lo, hi): return torch.sigmoid(x) * (hi-lo) + lo + # raw_global_weights = sigmoid_range(self.balance_factors, 0, 5.5) + + # raw_global_weights = F.softmax(self.balance_factors, dim=0) + + # raw_global_weights = F.sigmoid(self.balance_factors) + global_weights = raw_global_weights + orig_global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") + # + torch.randn(1, device=global_weights.device, dtype=global_weights.dtype) + + # local_weights = 1 - global_weights + # local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") + orig_local_weights = 1 - orig_global_weights + + # global_weights = orig_global_weights.to(torch.bfloat16) + # local_weights = orig_local_weights.to(torch.bfloat16) + + global_weights = orig_global_weights + local_weights = orig_local_weights + for segment_hidden_state, segment_sequence_mask in zip(segment_hidden_states, segment_sequence_masks): attn_outputs = self.forward_with_hidden_states( hidden_states=segment_hidden_state, sequence_mask=segment_sequence_mask, return_qkv_states=True @@ -489,12 +611,6 @@ def forward( # rank=0, # ) - global_weights = F.sigmoid(self.balance_factors) - global_weights = rearrange(global_weights, "n_heads -> 1 n_heads 1 1") - - local_weights = 1 - F.sigmoid(self.balance_factors) - local_weights = rearrange(local_weights, "n_heads -> 1 n_heads 1 1") - # log_rank( # f"[idx={idx}] global_weights.shape = {global_weights.shape}, global_weights: {global_weights}", # logger=logger, @@ -527,14 +643,19 @@ def forward( if ( constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0 + and constants.IS_RANK_TO_MONITOR is True ): if dist.get_rank() == 0: logs[f"layer_{self.layer_idx}:seg_{idx}:query_states"] = compute_stas(query_states) logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) - logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas(global_weights) - logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas(local_weights) + logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas( + orig_global_weights, log_tensor=True + ) + logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas( + orig_local_weights, log_tensor=True + ) logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) logs[f"layer_{self.layer_idx}:seg_{idx}:attention_output"] = compute_stas(attention_output) @@ -542,9 +663,8 @@ def forward( logs[f"layer_{self.layer_idx}:seg_{idx}:memory"] = compute_stas(memory) logs[f"layer_{self.layer_idx}:seg_{idx}:normalization"] = compute_stas(normalization) - if idx >= 1: - assert 1 == 1 - + # if idx >= 1: + # assert 1 == 1 memory, normalization = self._update_memory(memory, normalization, key_states, value_states) outputs.append(output) @@ -556,9 +676,13 @@ def forward( assert outputs.shape == hidden_states.shape if constants.GLOBAL_STEP is not None and (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0: - if dist.get_rank() == 0: + if constants.IS_RANK_TO_MONITOR is True: import wandb + for i in range(raw_global_weights.shape[0]): + logs[f"layer_{self.layer_idx}:global_weights:head_{i}"] = raw_global_weights[i].item() + logs[f"layer_{self.layer_idx}:balance_factors:head_{i}"] = self.balance_factors[i].item() + logs[f"layer_{self.layer_idx}:outputs"] = compute_stas(outputs) wandb.log({**logs, "iteration_step": constants.GLOBAL_STEP}) @@ -566,6 +690,7 @@ def forward( "hidden_states": outputs, "sequence_mask": sequence_mask, } + return return_outputs def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): @@ -576,6 +701,20 @@ def _retrieve_from_memory(self, query_states, prev_memory, prev_normalization): prev_memory is not None and prev_normalization is not None ) + if self.n_repeats > 1: + from einops import repeat + + prev_memory = repeat( + prev_memory, + "batch_size n_kv_heads d_k d_v -> batch_size (n_kv_heads n) d_k d_v", + n=self.n_repeats, + ) + prev_normalization = repeat( + prev_normalization, + "batch_size n_kv_heads d_head -> batch_size (n_kv_heads n) d_head", + n=self.n_repeats, + ) + sigma_query_states = F.elu(query_states) + 1 retrieved_memory = einsum( sigma_query_states, @@ -670,8 +809,6 @@ def forward_with_hidden_states( flash_attn_with_kvcache, ) - # seq_len = hidden_states.shape[1] - qkv_states = self.qkv_proj( hidden_states ) # [seq_len, batch_size, n_local_q_heads * d_qk + 2 * n_local_kv_heads * d_qk] @@ -1429,7 +1566,8 @@ def init_model_randomly(self, config: Config): if "balance_factors" in param_name: # init.normal_(param, mean=0.0, std=0.01) - param.zero_() + # param.zero_() + pass else: module = model.get_submodule(module_name) parametrizator.parametrize(param_name, module) From a91d1fed8f1c7eae1d163583d76bf2ff1467fa73 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Sun, 30 Jun 2024 09:15:32 +0000 Subject: [PATCH 37/43] support custom balance factor's act func, init --- src/nanotron/config/config.py | 3 + src/nanotron/config/models_config.py | 3 + src/nanotron/constants.py | 7 +- src/nanotron/debug/monitor.py | 236 ++++++++++-------- src/nanotron/helpers.py | 155 +++++++----- src/nanotron/models/llama.py | 99 ++++++-- src/nanotron/optim/gradient_accumulator.py | 39 +++ .../optim/inherit_from_other_optimizer.py | 7 + .../parallel/pipeline_parallel/engine.py | 3 +- src/nanotron/scaling/parametrization.py | 12 +- src/nanotron/serialize/main.py | 162 ++++++------ src/nanotron/serialize/weights.py | 24 +- src/nanotron/trainer.py | 35 ++- 13 files changed, 486 insertions(+), 299 deletions(-) diff --git a/src/nanotron/config/config.py b/src/nanotron/config/config.py index 814ad0ee..dba2d6c4 100644 --- a/src/nanotron/config/config.py +++ b/src/nanotron/config/config.py @@ -301,6 +301,9 @@ def __post_init__(self): class InfiniAttentionArgs: segment_length: int turn_on_memory: bool + balance_factor_lr: float + balance_act_type: str + balance_init_type: str @dataclass diff --git a/src/nanotron/config/models_config.py b/src/nanotron/config/models_config.py index ba4559cf..7cdd77d3 100644 --- a/src/nanotron/config/models_config.py +++ b/src/nanotron/config/models_config.py @@ -47,6 +47,9 @@ class LlamaConfig: pretraining_tp: int = 1 rms_norm_eps: float = 1e-6 rope_scaling: Optional[dict] = None + rope_theta: float = 10000.0 + # NOTE: The default value has been True, but for loading Llama3 checkpoints you have to set it to False + rope_interleaved: bool = True tie_word_embeddings: bool = False use_cache: bool = True vocab_size: int = 32000 diff --git a/src/nanotron/constants.py b/src/nanotron/constants.py index ed651077..7782043b 100644 --- a/src/nanotron/constants.py +++ b/src/nanotron/constants.py @@ -16,10 +16,15 @@ NEEDLE = None GLOBAL_STEP: Optional[int] = None -LOG_STATE_INTERVAL = 5000 +LOG_STATE_INTERVAL = 2000 +IS_RANK_TO_MONITOR = None CONFIG = None TRAINING_CONFIG = None DEBUG_PATH = "./debug/nn_states_with_bs_2_and_transpose_qkv/acts/" + +MONITOR_STATE_PATH = "/fsx/phuc/projects/nanotron/debug/runs" + +BALANCE_FACTOR_STD = {} diff --git a/src/nanotron/debug/monitor.py b/src/nanotron/debug/monitor.py index 81c51f52..d7406053 100644 --- a/src/nanotron/debug/monitor.py +++ b/src/nanotron/debug/monitor.py @@ -1,48 +1,69 @@ +import os +from pathlib import Path from typing import Dict, List, Optional, Tuple, Union import torch -import torch.distributed as dist -from nanotron.constants import DEBUG_PATH +from nanotron import constants +from nanotron.constants import MONITOR_STATE_PATH from nanotron.models.base import NanotronModel from nanotron.parallel import ParallelContext from torch import nn -from torch.distributed import ReduceOp -def track_weight_and_grad_stats(name: str, module: nn.Module, parallel_context: ParallelContext): - def compute_stats(name, tensors): - tensors = {"tensor": tensors} if not isinstance(tensors, dict) else tensors - stats = {} +def save_tensor(name, tensor, path): + if name is None or name == "": + return - for key, tensor in tensors.items(): - if tensor.dtype == torch.long or tensor.dtype == torch.int or tensor.dtype == torch.bool: - continue + # dp_rank = dist.get_rank(group=parallel_context.dp_pg) + # tp_rank = dist.get_rank(group=parallel_context.tp_pg) + # pp_rank = dist.get_rank(group=parallel_context.pp_pg) - if tensor is None: - assert 1 == 1 + os.makedirs(path, exist_ok=True) - stats[key] = {} - stats[key] = { - "mean": tensor.cpu().mean().item(), - # "std": tensor.std().item(), - # "var": tensor.var().item(), - # "norm": tensor.norm().item(), - # "min": tensor.min().item(), - # "max": tensor.max().item(), - "amax": tensor.cpu().abs().max().item(), - } + # if dp_rank == 0 and tp_rank == 0 and pp_rank == 0: + torch.save( + tensor, + # f"{path}/{name}_dp_rank_{dp_rank}_and_pp_rank_{pp_rank}_and_tp_rank_{tp_rank}.pt" + f"{path}/{name}.pt", + ) - # NOTE: now all reduce mean this across tp ranks - tp_group = parallel_context.tp_pg - for metric_name, metric_value in stats[key].items(): - stats[key][metric_name] = torch.tensor(metric_value, device=tensor.device, dtype=tensor.dtype) - dist.all_reduce(stats[key][metric_name], op=ReduceOp.MAX, group=tp_group) - # tp_rank = dist.get_rank(group=tp_group) - # stats[key][f"data:tp_{tp_rank}"] = tensor.detach().cpu().tolist() +def compute_stats(name, tensors): + tensors = {"tensor": tensors} if not isinstance(tensors, dict) else tensors + stats = {} - return stats[list(stats.keys())[0]] if len(stats) == 1 else stats + for key, tensor in tensors.items(): + if tensor.dtype == torch.long or tensor.dtype == torch.int or tensor.dtype == torch.bool: + continue + stats[key] = {} + stats[key] = { + # "mean": tensor.cpu().mean().item(), + "mean": tensor.cpu().mean().item(), + "std": tensor.cpu().std().item(), + # "data": tensor.detach().cpu().tolist() + # "var": tensor.var().item(), + "norm": tensor.cpu().norm().item(), + # "min": tensor.min().item(), + # "max": tensor.max().item(), + "amax": tensor.cpu().amax().item(), + } + + # NOTE: now all reduce mean this across tp ranks + # tp_group = parallel_context.tp_pg + # for metric_name, metric_value in stats[key].items(): + # stats[key][metric_name] = torch.tensor(metric_value, device=tensor.device, dtype=tensor.dtype) + # dist.all_reduce(stats[key][metric_name], op=ReduceOp.MAX, group=tp_group) + + # tp_rank = dist.get_rank(group=tp_group) + # stats[key][f"data:tp_{tp_rank}"] = tensor.detach().cpu().tolist() + + return stats[list(stats.keys())[0]] if len(stats) == 1 else stats + + +def track_weight_and_grad_stats( + name: str, module: nn.Module, parallel_context: ParallelContext, save_path: Optional[Path] = None +): logs: Dict[str, Dict[str, float]] = {} if name not in logs: @@ -56,86 +77,82 @@ def _save_output_stats(module: nn.Module, input: torch.Tensor, output: torch.Ten stats = compute_stats(name, param.data) if stats is not None: logs[name][param_name] = stats - - inputs = input if isinstance(input, tuple) else (input,) - outputs = output if isinstance(output, tuple) else (output,) - - if len(inputs) > 1: - for i, inp in enumerate(inputs): - if inp.dtype == torch.long: - # NOTE: this is input ids in transformers - continue - stats = compute_stats(name, inp) - if stats is not None: - logs[name][f"input:{i}"] = stats - elif len(inputs) == 1: - stats = compute_stats(name, inputs[0]) - if stats is not None: - logs[name]["input"] = stats - - dp_rank = dist.get_rank(group=parallel_context.dp_pg) - tp_rank = dist.get_rank(group=parallel_context.tp_pg) - pp_rank = dist.get_rank(group=parallel_context.pp_pg) - - def save(name, tensor): - import os - - # from nanotron.constants import - # DIR = "./debug/nn_states_with_bs_1/acts/" - - os.makedirs(DEBUG_PATH, exist_ok=True) - - if dp_rank == 0: - torch.save( - tensor, f"{DEBUG_PATH}/{name}_dp_rank_{dp_rank}_and_pp_rank_{pp_rank}_and_tp_rank_{tp_rank}.pt" - ) - - if len(outputs) > 1: - for i, out in enumerate(outputs): - stats = compute_stats(name, out) - save(name, out) - if stats is not None: - logs[name][f"output:{i}"] = stats - elif len(outputs) == 1: - stats = compute_stats(name, outputs[0]) - save(name, outputs[0]) - if stats is not None: - logs[name]["output"] = stats - - def _save_grad_stats(module: nn.Linear, grad_input, grad_output: torch.Tensor): - if isinstance(grad_output, tuple): - for i, grad in enumerate(grad_output): - if grad is None: - continue - - stats = compute_stats(name, grad) - if stats is not None: - logs[name][f"grad_output:{i}"] = stats - else: - stats = compute_stats(name, grad_output) - if stats is not None: - logs[name]["grad_output"] = stats - - if isinstance(grad_input, tuple): - for i, grad in enumerate(grad_input): - if grad is not None: - stats = compute_stats(name, grad) - if stats is not None: - logs[name][f"grad_input:{i}"] = stats - else: - if grad_input is not None: - stats = compute_stats(name, grad_input) - if stats is not None: - logs[name]["grad_input"] = stats + # save_tensor(f"{name}.{param_name}", param.data, path=f"{save_path}/weights/") + + # inputs = input if isinstance(input, tuple) else (input,) + # outputs = output if isinstance(output, tuple) else (output,) + + # if len(inputs) > 1: + # for i, inp in enumerate(inputs): + # if inp.dtype == torch.long: + # # NOTE: this is input ids in transformers + # continue + # # stats = compute_stats(name, inp) + # if stats is not None: + # logs[name][f"input:{i}"] = stats + # elif len(inputs) == 1: + # # stats = compute_stats(name, inputs[0]) + # if stats is not None: + # logs[name]["input"] = stats + + # if len(outputs) > 1: + # for i, out in enumerate(outputs): + # # stats = compute_stats(name, out) + # if name is None or name == "": + # assert 1 == 1 + + # if stats is not None: + # logs[name][f"output:{i}"] = stats + # # save_tensor(name, out, path=f"{save_path}/acts/") + # elif len(outputs) == 1: + # # if name is None or name == "": + # # assert 1 == 1 + + # # stats = compute_stats(name, outputs[0]) + # if stats is not None: + # logs[name]["output"] = stats + # # try: + # # save_tensor(name, outputs[0], path=f"{save_path}/acts/") + # # except: + # # assert 1 == 1 + + # def _save_grad_stats(module: nn.Linear, grad_input, grad_output: torch.Tensor): + # if isinstance(grad_output, tuple): + # for i, grad in enumerate(grad_output): + # if grad is None: + # continue + + # stats = compute_stats(name, grad) + # if stats is not None: + # logs[name][f"grad_output:{i}"] = stats + # else: + # stats = compute_stats(name, grad_output) + # if stats is not None: + # logs[name]["grad_output"] = stats + + # if isinstance(grad_input, tuple): + # for i, grad in enumerate(grad_input): + # if grad is not None: + # stats = compute_stats(name, grad) + # if stats is not None: + # logs[name][f"grad_input:{i}"] = stats + # else: + # if grad_input is not None: + # stats = compute_stats(name, grad_input) + # if stats is not None: + # logs[name]["grad_input"] = stats handles = [] handles.append(module.register_forward_hook(_save_output_stats)) - handles.append(module.register_backward_hook(_save_grad_stats)) + # handles.append(module.register_backward_hook(_save_grad_stats)) return logs, handles -def monitor_nanotron_model(model: NanotronModel, parallel_context: Optional[ParallelContext] = None): +def monitor_nanotron_model(run_name: str, model: NanotronModel, parallel_context: Optional[ParallelContext] = None): assert parallel_context is not None + assert isinstance(constants.GLOBAL_STEP, int) + + save_path = f"{MONITOR_STATE_PATH}/{run_name}/{constants.GLOBAL_STEP}" def get_leaf_modules(module: nn.Module) -> List[Tuple[str, nn.Module]]: """ @@ -153,9 +170,16 @@ def get_leaf_modules(module: nn.Module) -> List[Tuple[str, nn.Module]]: leaf_modules = [(name, module) for name, module in model.named_modules()] for name, module in leaf_modules: - module_logs, module_handles = track_weight_and_grad_stats(name, module, parallel_context) - logs.update(module_logs) - handles.extend(module_handles) + if "balance_factors" in name: + module_logs, module_handles = track_weight_and_grad_stats( + name=name, + module=module, + parallel_context=parallel_context, + # save_tensor=True, + save_path=save_path, + ) + logs.update(module_logs) + handles.extend(module_handles) return logs, handles diff --git a/src/nanotron/helpers.py b/src/nanotron/helpers.py index 89cc27dd..ef5bb0e9 100644 --- a/src/nanotron/helpers.py +++ b/src/nanotron/helpers.py @@ -75,7 +75,33 @@ def init_random_states(parallel_config: ParallelismArgs, tp_pg: ProcessGroup): return random_states -def lr_scheduler_builder(optimizer: Optimizer, lr_scheduler_args: LRSchedulerArgs, total_training_steps: int): +def _get_lr_lambda_in_training( + current_step: int, + initial_lr: float, + # lr_decay_steps: int, + # lr_decay_starting_step: int, + total_training_steps: int, + lr_scheduler_args: LRSchedulerArgs, +): + """ + current_step: current training step + initial_lr: the learning rate of a parameter group + + More info on initial_lr: + And in standard parameterization, lr_lambda only takes a single learning rate. + But in µTransfer, each parameter has a custom learning rate (custom_lr = lr_scheduler_args.learning_rate * scaling_factor), + so each parameter group has a custom lr_lambda function. + + LR Scheduling function, it has from 2 up to 4 phases: + - warmup, + - optional: constant (if lr_decay_starting_step is set) + - decay + - optional: constant (if lr_decay_steps and/or lr_decay_starting_step are set) + Warmup starts at lr=0 and ends at `lr=lr` + Then it stays constant at lr if lr_decay_starting_step is set and larger than lr_warmup_steps + Then it decays until `min_decay_lr` for lr_decay_steps if set, else: (total_training_steps - lr_warmup_steps or lr_decay_starting_step) + Then it stays constant at min_decay_lr if lr_decay_starting_step is set and total_training_steps is larger) + """ if lr_scheduler_args.lr_decay_steps is None: lr_decay_steps = total_training_steps if lr_scheduler_args.lr_warmup_steps is not None: @@ -93,71 +119,59 @@ def lr_scheduler_builder(optimizer: Optimizer, lr_scheduler_args: LRSchedulerArg else: lr_decay_starting_step = lr_scheduler_args.lr_decay_starting_step - def lr_lambda(current_step: int, initial_lr: float): - """ - current_step: current training step - initial_lr: the learning rate of a parameter group - - More info on initial_lr: - And in standard parameterization, lr_lambda only takes a single learning rate. - But in µTransfer, each parameter has a custom learning rate (custom_lr = lr_scheduler_args.learning_rate * scaling_factor), - so each parameter group has a custom lr_lambda function. - - LR Scheduling function, it has from 2 up to 4 phases: - - warmup, - - optional: constant (if lr_decay_starting_step is set) - - decay - - optional: constant (if lr_decay_steps and/or lr_decay_starting_step are set) - Warmup starts at lr=0 and ends at `lr=lr` - Then it stays constant at lr if lr_decay_starting_step is set and larger than lr_warmup_steps - Then it decays until `min_decay_lr` for lr_decay_steps if set, else: (total_training_steps - lr_warmup_steps or lr_decay_starting_step) - Then it stays constant at min_decay_lr if lr_decay_starting_step is set and total_training_steps is larger) - """ - # No warmup or decay - if lr_scheduler_args.lr_warmup_steps == 0 and lr_decay_steps == 0: - return initial_lr - - # Warmup phase - elif lr_scheduler_args.lr_warmup_style is not None and current_step <= lr_scheduler_args.lr_warmup_steps: - if lr_scheduler_args.lr_warmup_style == "linear": - lmbda = initial_lr * current_step / max(lr_scheduler_args.lr_warmup_steps, 1) - elif lr_scheduler_args.lr_warmup_style == "constant": - lmbda = lr_scheduler_args.learning_rate - else: - raise ValueError(f"Unknown warmup style {lr_scheduler_args.lr_warmup_style}") - - # Optional constant phase at learning_rate - elif current_step < lr_decay_starting_step: - lmbda = initial_lr - - # Decay phase - elif lr_scheduler_args.lr_decay_style is not None and current_step < lr_decay_starting_step + lr_decay_steps: - if lr_scheduler_args.lr_decay_style == "cosine": - lmbda = ( - lr_scheduler_args.min_decay_lr - + (initial_lr - lr_scheduler_args.min_decay_lr) - * (1 + math.cos(math.pi * (current_step - lr_decay_starting_step) / lr_decay_steps)) - / 2 - ) - elif lr_scheduler_args.lr_decay_style == "linear": - lmbda = ( - lr_scheduler_args.min_decay_lr - + (initial_lr - lr_scheduler_args.min_decay_lr) - * (lr_decay_steps - (current_step - lr_decay_starting_step)) - / lr_decay_steps - ) - else: - raise ValueError(f"Unknown decay style {lr_scheduler_args.lr_decay_style}") - - # Optional constant phase at min_decay_lr + # No warmup or decay + if lr_scheduler_args.lr_warmup_steps == 0 and lr_decay_steps == 0: + return initial_lr + + # Warmup phase + elif lr_scheduler_args.lr_warmup_style is not None and current_step <= lr_scheduler_args.lr_warmup_steps: + if lr_scheduler_args.lr_warmup_style == "linear": + lmbda = initial_lr * current_step / max(lr_scheduler_args.lr_warmup_steps, 1) + elif lr_scheduler_args.lr_warmup_style == "constant": + lmbda = lr_scheduler_args.learning_rate else: - lmbda = lr_scheduler_args.min_decay_lr + raise ValueError(f"Unknown warmup style {lr_scheduler_args.lr_warmup_style}") + + # Optional constant phase at learning_rate + elif current_step < lr_decay_starting_step: + lmbda = initial_lr + + # Decay phase + elif lr_scheduler_args.lr_decay_style is not None and current_step < lr_decay_starting_step + lr_decay_steps: + if lr_scheduler_args.lr_decay_style == "cosine": + lmbda = ( + lr_scheduler_args.min_decay_lr + + (initial_lr - lr_scheduler_args.min_decay_lr) + * (1 + math.cos(math.pi * (current_step - lr_decay_starting_step) / lr_decay_steps)) + / 2 + ) + elif lr_scheduler_args.lr_decay_style == "linear": + lmbda = ( + lr_scheduler_args.min_decay_lr + + (initial_lr - lr_scheduler_args.min_decay_lr) + * (lr_decay_steps - (current_step - lr_decay_starting_step)) + / lr_decay_steps + ) + else: + raise ValueError(f"Unknown decay style {lr_scheduler_args.lr_decay_style}") + + # Optional constant phase at min_decay_lr + else: + lmbda = lr_scheduler_args.min_decay_lr + + lmbda /= initial_lr # Normalization for pytorch + return lmbda - lmbda /= initial_lr # Normalization for pytorch - return lmbda +def lr_scheduler_builder(optimizer: Optimizer, lr_scheduler_args: LRSchedulerArgs, total_training_steps: int): def get_lr_lambda_for_param_group(lr: float): - return partial(lr_lambda, initial_lr=lr) + # return partial(_get_lr_lambda_in_training, initial_lr=lr, lr_decay_steps=lr_decay_steps, lr_decay_starting_step=lr_decay_starting_step, lr_scheduler_args=lr_scheduler_args) + return partial( + _get_lr_lambda_in_training, + initial_lr=lr, + total_training_steps=total_training_steps, + lr_scheduler_args=lr_scheduler_args, + ) # NOTE: get learning rate scheduler for each param group lr_lambdas = [] @@ -215,7 +229,20 @@ def get_custom_lr_for_named_parameters( name, param, ) in named_parameters: - learning_rate = learning_rate_mapper.get_lr(name, param) + + if "balance_factors" in name: + from nanotron import constants + + learning_rate = constants.CONFIG.infini_attention.balance_factor_lr + else: + learning_rate = learning_rate_mapper.get_lr(name, param) + + log_rank( + f"[Optimizer Building] Parameter {name} has a learning rate of {learning_rate}", + logger=logger, + level=logging.INFO, + ) + assert isinstance(learning_rate, float), f"Expected a float, got {learning_rate} for parameter {name}" named_param_groups_with_custom_lr.append({"named_params": [(name, param)], "lr": learning_rate}) @@ -249,6 +276,8 @@ def init_optimizer_and_grad_accumulator( lr=optimizer_args.learning_rate_scheduler.learning_rate, ) + assert 1 == 1 + # Basic optimizer builder def basic_optimizer_builder(named_param_groups): return NamedOptimizer( diff --git a/src/nanotron/models/llama.py b/src/nanotron/models/llama.py index 6f7fbaf4..24ec3773 100644 --- a/src/nanotron/models/llama.py +++ b/src/nanotron/models/llama.py @@ -53,13 +53,13 @@ def compute_stas(tensor, log_tensor: bool = False, save_tensor: bool = False): ) logs = { - "mean": tensor.detach().mean().item(), - "std": tensor.detach().std().item(), + "mean": tensor.cpu().mean().item(), + "std": tensor.cpu().std().item(), # "var": tensor.var().item(), - "norm": tensor.norm().item(), + "norm": tensor.cpu().norm().item(), # "min": tensor.min().item(), # "max": tensor.max().item(), - "amax": tensor.detach().abs().max().item(), + "amax": tensor.cpu().amax().item(), } # if log_tensor: # import torchshow as ts @@ -474,21 +474,60 @@ def __init__( from nanotron.parallel.sharded_parameters import SplitConfig, create_sharded_parameter_from_config - if constants.CONFIG.infini_attention.turn_on_memory is True: + # if constants.CONFIG.infini_attention.turn_on_memory is True: + + # # balance_factors = nn.Parameter( + # # torch.zeros(self.n_local_q_heads, device=device, dtype=torch.float32) + # # # torch.randn(self.n_local_q_heads, device=device, dtype=torch.float32).normal_(mean=0.0, std=1/math.sqrt(config.num_attention_heads)) + # # # torch.randn(self.n_local_q_heads, device=device, dtype=torch.float32).normal_(mean=0.0, std=1/math.sqrt(self.n_local_q_heads)) + # # ) + # pass + + if constants.CONFIG.infini_attention.balance_init_type == "zeros": + log_rank("Zero initialized balance factors", logger=logger, level=logging.WARNING, rank=0) + balance_factors = nn.Parameter(torch.zeros(self.n_local_q_heads, device=device, dtype=torch.float32)) + elif constants.CONFIG.infini_attention.balance_init_type == "normal_randn": + log_rank("normal_randn initialized balance factors", logger=logger, level=logging.WARNING, rank=0) + balance_factors = nn.Parameter(torch.randn(self.n_local_q_heads, device=device, dtype=torch.float32)) + else: + raise ValueError(f"balance_init_type {constants.CONFIG.infini_attention.balance_init_type} not supported") - balance_factors = nn.Parameter( - torch.zeros(self.n_local_q_heads, device=device, dtype=torch.float32) - # torch.randn(self.n_local_q_heads, device=device, dtype=torch.float32).normal_(mean=0.0, std=1/math.sqrt(config.num_attention_heads)) - # torch.randn(self.n_local_q_heads, device=device, dtype=torch.float32).normal_(mean=0.0, std=1/math.sqrt(self.n_local_q_heads)) - ) - self.balance_factors = create_sharded_parameter_from_config( - parameter=balance_factors, - pg=tp_pg, - split_config=SplitConfig( - split_dim=0, - # contiguous_chunks=(self.n_local_heads, self.n_local_heads) - ), - ) + self.balance_factors = create_sharded_parameter_from_config( + parameter=balance_factors, + pg=tp_pg, + split_config=SplitConfig( + split_dim=0, + # contiguous_chunks=(self.n_local_heads, self.n_local_heads) + ), + ) + + if constants.CONFIG.infini_attention.balance_act_type == "orig_sigmoid": + balance_act_func = F.sigmoid + elif constants.CONFIG.infini_attention.balance_act_type == "orig_tanh": + balance_act_func = F.tanh + elif constants.CONFIG.infini_attention.balance_act_type == "hard_sigmoid": + + def hard_sigmoid(x): + return torch.clamp(x * 0.2 + 0.5, min=0.0, max=1.0) + + balance_act_func = hard_sigmoid + elif constants.CONFIG.infini_attention.balance_act_type == "tanh_abs": + + def tanh_abs(x): + return torch.tanh(x).abs() + + balance_act_func = tanh_abs + else: + raise ValueError(f"balance_act_type {constants.CONFIG.infini_attention.balance_act_type} not supported") + + log_rank( + f"Balance act func is {balance_act_func}", + logger=logger, + level=logging.WARNING, + rank=0, + ) + + self.balance_act_func = balance_act_func log_rank( f"Segment length is {self.segment_length}, turn_on_memory: {constants.CONFIG.infini_attention.turn_on_memory is True}", @@ -540,7 +579,21 @@ def forward( if constants.GLOBAL_STEP == 11 and constants.IS_RANK_TO_MONITOR is True: assert 1 == 1 - raw_global_weights = F.sigmoid(self.balance_factors) + # if constants.CONFIG.infini_attention.balance_act_type == "orig_sigmoid": + # raw_global_weights = F.sigmoid(self.balance_factors) + # elif constants.CONFIG.infini_attention.balance_act_type == "orig_tanh": + # raw_global_weights = F.tanh(self.balance_factors) + # elif constants.CONFIG.infini_attention.balance_act_type == "hard_sigmoid": + # def hard_sigmoid(x): + # return torch.clamp(x * 0.2 + 0.5, min=0.0, max=1.0) + # raw_global_weights = hard_sigmoid(self.balance_factors) + # elif constants.CONFIG.infini_attention.balance_act_type == "tanh_abs": + # def tanh_abs(x): + # return torch.tanh(x).abs() + # raw_global_weights = tanh_abs(self.balance_factors) + # else: + # raise ValueError(f"balance_act_type {constants.CONFIG.infini_attention.balance_act_type} not supported") + raw_global_weights = self.balance_act_func(self.balance_factors) # raw_global_weights = F.tanh(self.balance_factors).abs() # raw_global_weights = raw_global_weights * raw_global_weights.mean() @@ -650,12 +703,6 @@ def forward( logs[f"layer_{self.layer_idx}:seg_{idx}:key_states"] = compute_stas(key_states) logs[f"layer_{self.layer_idx}:seg_{idx}:value_states"] = compute_stas(value_states) - logs[f"layer_{self.layer_idx}:seg_{idx}:global_weights"] = compute_stas( - orig_global_weights, log_tensor=True - ) - logs[f"layer_{self.layer_idx}:seg_{idx}:local_weights"] = compute_stas( - orig_local_weights, log_tensor=True - ) logs[f"layer_{self.layer_idx}:seg_{idx}:local_attn_outputs"] = compute_stas(local_attn_outputs) logs[f"layer_{self.layer_idx}:seg_{idx}:retrieved_memory"] = compute_stas(retrieved_memory) logs[f"layer_{self.layer_idx}:seg_{idx}:attention_output"] = compute_stas(attention_output) @@ -680,6 +727,8 @@ def forward( import wandb for i in range(raw_global_weights.shape[0]): + logs[f"layer_{self.layer_idx}:global_weights"] = compute_stas(orig_global_weights, log_tensor=True) + logs[f"layer_{self.layer_idx}:local_weights"] = compute_stas(orig_local_weights, log_tensor=True) logs[f"layer_{self.layer_idx}:global_weights:head_{i}"] = raw_global_weights[i].item() logs[f"layer_{self.layer_idx}:balance_factors:head_{i}"] = self.balance_factors[i].item() diff --git a/src/nanotron/optim/gradient_accumulator.py b/src/nanotron/optim/gradient_accumulator.py index 38e3f6fc..043fa590 100644 --- a/src/nanotron/optim/gradient_accumulator.py +++ b/src/nanotron/optim/gradient_accumulator.py @@ -217,9 +217,23 @@ def _accumulate_grad(self, name: str, half_param: NanotronParameter) -> None: assert half_param.grad is not None, f"Expected param {name} to have gradient." fp32_grad = self.get_grad_buffer(name=name) + # if "balance_factor" in name: + # # with torch.no_grad(): + # # fp32_grad = fp32_grad * 10**3 + # assert 1 == 1 + if self._is_accumulation_sync_step is False: # WARNING: We assume fp32_grad_bucket is already zeroed + # import torch.nn.functional as F + # # NOTE: normalzie the gradient + # if "balance_factor" in name: + # _grad = F.normalize(half_param.grad.unsqueeze(dim=0)) / 10 + # _grad = _grad.squeeze(dim=0) + # fp32_grad.add_(_grad) + # else: + # fp32_grad.add_(half_param.grad) fp32_grad.add_(half_param.grad) + # In case _is_accumulation_sync_step = True: no need to add half gradients, because it's done in the allreduce hook # TODO @thomasw21: Is it better to set to zero instead? @@ -227,6 +241,9 @@ def _accumulate_grad(self, name: str, half_param: NanotronParameter) -> None: # In the case an optimizer decides to set it to None, we need to re-assign previous buffer if name in self.parameters: + if "balance_factor" in name: + assert 1 == 1 + fp32_param = self.parameters[name]["fp32"] if hasattr(self, "param_name_to_offsets"): if name not in self.param_name_to_offsets: @@ -238,6 +255,28 @@ def _accumulate_grad(self, name: str, half_param: NanotronParameter) -> None: grad = fp32_grad fp32_param.grad = grad + # if "balance_factor" in name: + import wandb + from nanotron import constants + + if (constants.GLOBAL_STEP - 1) % constants.LOG_STATE_INTERVAL == 0 and constants.IS_RANK_TO_MONITOR is True: + from nanotron import constants + + # save_tensor( + # name=f"{name}.grad", + # tensor=fp32_param.grad, + # path=f"{constants.MONITOR_STATE_PATH}/{constants.CONFIG.general.run}/{constants.GLOBAL_STEP}/grads" + # ) + + wandb.log( + { + f"{name}:grad:mean": fp32_param.grad.detach().mean().item(), + f"{name}:grad:std": fp32_param.grad.detach().std().item(), + f"{name}:grad:norm": fp32_param.grad.detach().norm().item(), + "iteration_step": constants.GLOBAL_STEP, + } + ) + @contextmanager def no_sync(self): """A context manager to disable gradient synchronizations across diff --git a/src/nanotron/optim/inherit_from_other_optimizer.py b/src/nanotron/optim/inherit_from_other_optimizer.py index 2ddd36d0..86e6ba81 100644 --- a/src/nanotron/optim/inherit_from_other_optimizer.py +++ b/src/nanotron/optim/inherit_from_other_optimizer.py @@ -49,6 +49,13 @@ def get_base_optimizer(self): def param_groups(self): return self.optimizer.param_groups + # @property + # def param_index_to_name(self): + # state_id_to_name = {id(state): self.id_to_name[id(param)] for param, state in self.optimizer.state.items()} + # optim_state_dict["names"] = { + # index: state_id_to_name[id(state)] for index, state in optim_state_dict["state"].items() + # } + def inherit_from(self, cls): if isinstance(self, cls): return True diff --git a/src/nanotron/parallel/pipeline_parallel/engine.py b/src/nanotron/parallel/pipeline_parallel/engine.py index babf875e..a35a997e 100644 --- a/src/nanotron/parallel/pipeline_parallel/engine.py +++ b/src/nanotron/parallel/pipeline_parallel/engine.py @@ -227,7 +227,8 @@ def __init__(self): from transformers import AutoTokenizer - self.tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") + # self.tokenizer = AutoTokenizer.from_pretrained("lvwerra/the-tokenizer-v1") + self.tokenizer = AutoTokenizer.from_pretrained("/fsx/haojun/lighteval_evaluation_model/NanotronLlama3-8B") def train_batch_iter( self, diff --git a/src/nanotron/scaling/parametrization.py b/src/nanotron/scaling/parametrization.py index e6241651..84e7de9a 100644 --- a/src/nanotron/scaling/parametrization.py +++ b/src/nanotron/scaling/parametrization.py @@ -197,6 +197,14 @@ def get_lr(self, param_name: str, param: nn.Parameter) -> float: # NOTE: param_name should be like 'model.token_position_embeddings.pp_block.token_embedding.weight' # since names_to_modules map module_name to module # so we remove the .weight and .bias from param_name to get the module_name - module_name = param_name.rsplit(".", 1)[0] - module = self.names_to_modules[module_name] + + # NOTE: the purpose if remove ".weight" or ".bias" from module_name.weight + # so we get the module name + if "weight" or "bias" in param_name: + module_name = param_name.rsplit(".", 1)[0] + + try: + module = self.names_to_modules[module_name] + except Exception: + raise Exception(f"Can't find {module_name} in {self.names_to_modules.keys()}") return self.MODULE_TO_PARAMETRIZE[type(module)](param, module) diff --git a/src/nanotron/serialize/main.py b/src/nanotron/serialize/main.py index a2a3d4aa..f8e621cd 100644 --- a/src/nanotron/serialize/main.py +++ b/src/nanotron/serialize/main.py @@ -9,14 +9,8 @@ from nanotron import logging from nanotron import optim as optim from nanotron.config import Config -from nanotron.distributed import get_global_rank from nanotron.logging import log_rank from nanotron.parallel import ParallelContext -from nanotron.parallel.parameters import NanotronParameter -from nanotron.sanity_checks import ( - assert_tensor_synced_across_pg, - check_optim_state_in_sync, -) from nanotron.serialize.metadata import CheckpointMetadata, load_meta, save_meta from nanotron.serialize.optimizer import ( load_lr_scheduler, @@ -117,84 +111,84 @@ def save( # TODO @thomas21: sanity check, not sure whether that needs to happen at testing or now (depends how much it costs) ### # SANITY CHECK: Check that the model params are synchronized across `parallel_context.dp_pg` - if sanity_checks: - for name, param_or_buffer in sorted(model.state_dict().items(), key=lambda x: x[0]): - assert_tensor_synced_across_pg( - tensor=param_or_buffer, - pg=parallel_context.dp_pg, - msg=lambda err: f"{name} are not synced across DP {err}", - ) - - # SANITY CHECK: Check that the tied parameters are synchronized - sorted_tied_parameters = sorted( - ( - param - for parameters_group in optimizer.param_groups - for param in parameters_group["params"] - if param.requires_grad and isinstance(param, NanotronParameter) and param.is_tied - ), - key=lambda param: param.get_tied_info().name, - ) - for tied_param in sorted_tied_parameters: - tied_info = tied_param.get_tied_info() - group_ranks = tied_info.global_ranks - group = parallel_context.world_ranks_to_pg[group_ranks] - - assert_tensor_synced_across_pg( - tensor=tied_param, pg=group, msg=lambda err: f"Tied {tied_info.name} are not synced {err}" - ) - if not optimizer.inherit_from(optim.ZeroDistributedOptimizer): - check_optim_state_in_sync(optimizer, parallel_context.dp_pg) - - # SANITY CHECK: tied parameters have their optimizer states synchronized - # Compute a mapping from id_ to index in the optimizer sense - state_dict = optimizer.state_dict() - assert len(optimizer.param_groups) == len(state_dict["param_groups"]) - index_to_param = {} - for real_param_group, index_param_group in zip(optimizer.param_groups, state_dict["param_groups"]): - indices = index_param_group["params"] - parameters = real_param_group["params"] - assert len(indices) == len(parameters) - for param, index in zip(parameters, indices): - assert index not in index_to_param - index_to_param[index] = param - - current_state_dict = optimizer.state_dict() - for index, optim_state in sorted(current_state_dict["state"].items(), key=lambda x: x[0]): - param = index_to_param[index] - if not isinstance(param, NanotronParameter): - continue - if not param.is_tied: - # If it's not shared, we don't need to check it's synced - continue - tied_info = param.get_tied_info() - group_ranks = tied_info.global_ranks - group = parallel_context.world_ranks_to_pg[group_ranks] - reference_rank = 0 - current_rank = dist.get_rank(group) - - for name, tensor in optim_state.items(): - # FIXME @thomasw21: Some data is actually on `cpu`, just for this test we most it to `cuda` - tensor = tensor.to("cuda") - - if current_rank == reference_rank: - reference_tensor = tensor - else: - reference_tensor = torch.empty_like(tensor) - dist.broadcast( - reference_tensor, - src=get_global_rank(group=group, group_rank=reference_rank), - group=group, - ) - - torch.testing.assert_close( - tensor, - reference_tensor, - atol=0, - rtol=0, - msg=lambda msg: f"tensor at {current_state_dict['names'][index]} doesn't match with our reference. Optimizer key: {name}\nCur: {tensor}\nRef: {reference_tensor}\n{msg}", - ) - ### + # if sanity_checks: + # for name, param_or_buffer in sorted(model.state_dict().items(), key=lambda x: x[0]): + # assert_tensor_synced_across_pg( + # tensor=param_or_buffer, + # pg=parallel_context.dp_pg, + # msg=lambda err: f"{name} are not synced across DP {err}", + # ) + + # # SANITY CHECK: Check that the tied parameters are synchronized + # sorted_tied_parameters = sorted( + # ( + # param + # for parameters_group in optimizer.param_groups + # for param in parameters_group["params"] + # if param.requires_grad and isinstance(param, NanotronParameter) and param.is_tied + # ), + # key=lambda param: param.get_tied_info().name, + # ) + # for tied_param in sorted_tied_parameters: + # tied_info = tied_param.get_tied_info() + # group_ranks = tied_info.global_ranks + # group = parallel_context.world_ranks_to_pg[group_ranks] + + # assert_tensor_synced_across_pg( + # tensor=tied_param, pg=group, msg=lambda err: f"Tied {tied_info.name} are not synced {err}" + # ) + # if not optimizer.inherit_from(optim.ZeroDistributedOptimizer): + # check_optim_state_in_sync(optimizer, parallel_context.dp_pg) + + # # SANITY CHECK: tied parameters have their optimizer states synchronized + # # Compute a mapping from id_ to index in the optimizer sense + # state_dict = optimizer.state_dict() + # assert len(optimizer.param_groups) == len(state_dict["param_groups"]) + # index_to_param = {} + # for real_param_group, index_param_group in zip(optimizer.param_groups, state_dict["param_groups"]): + # indices = index_param_group["params"] + # parameters = real_param_group["params"] + # assert len(indices) == len(parameters) + # for param, index in zip(parameters, indices): + # assert index not in index_to_param + # index_to_param[index] = param + + # current_state_dict = optimizer.state_dict() + # for index, optim_state in sorted(current_state_dict["state"].items(), key=lambda x: x[0]): + # param = index_to_param[index] + # if not isinstance(param, NanotronParameter): + # continue + # if not param.is_tied: + # # If it's not shared, we don't need to check it's synced + # continue + # tied_info = param.get_tied_info() + # group_ranks = tied_info.global_ranks + # group = parallel_context.world_ranks_to_pg[group_ranks] + # reference_rank = 0 + # current_rank = dist.get_rank(group) + + # for name, tensor in optim_state.items(): + # # FIXME @thomasw21: Some data is actually on `cpu`, just for this test we most it to `cuda` + # tensor = tensor.to("cuda") + + # if current_rank == reference_rank: + # reference_tensor = tensor + # else: + # reference_tensor = torch.empty_like(tensor) + # dist.broadcast( + # reference_tensor, + # src=get_global_rank(group=group, group_rank=reference_rank), + # group=group, + # ) + + # torch.testing.assert_close( + # tensor, + # reference_tensor, + # atol=0, + # rtol=0, + # msg=lambda msg: f"tensor at {current_state_dict['names'][index]} doesn't match with our reference. Optimizer key: {name}\nCur: {tensor}\nRef: {reference_tensor}\n{msg}", + # ) + # ### dist.barrier(parallel_context.world_pg) diff --git a/src/nanotron/serialize/weights.py b/src/nanotron/serialize/weights.py index 55c2b8cb..7543b2fb 100644 --- a/src/nanotron/serialize/weights.py +++ b/src/nanotron/serialize/weights.py @@ -339,15 +339,21 @@ def load_weights( current_checkpoint_version == checkpoint_version ), f"Checkpoint version mismatch at {shards_path[0]}." - if checkpoint_version <= CHECKPOINT_VERSION: - load_sharded_param_latest( - param_or_buffer=param_or_buffer, - sharded_info=sharded_info, - shards_path=shards_path, - param_shard_metadata=param_shard_metadata[name], - ) - else: - raise ValueError(f"Unsupported checkpoint version {checkpoint_version}") + # if checkpoint_version <= CHECKPOINT_VERSION: + # load_sharded_param_latest( + # param_or_buffer=param_or_buffer, + # sharded_info=sharded_info, + # shards_path=shards_path, + # param_shard_metadata=param_shard_metadata[name], + # ) + # else: + # raise ValueError(f"Unsupported checkpoint version {checkpoint_version}") + load_sharded_param_latest( + param_or_buffer=param_or_buffer, + sharded_info=sharded_info, + shards_path=shards_path, + param_shard_metadata=param_shard_metadata[name], + ) else: raise NotImplementedError(f"Parameters {param} should be a NanotronParameter") diff --git a/src/nanotron/trainer.py b/src/nanotron/trainer.py index 8fc1b605..6d27b1d6 100644 --- a/src/nanotron/trainer.py +++ b/src/nanotron/trainer.py @@ -172,10 +172,16 @@ def __init__( self.model.module if isinstance(self.model, DistributedDataParallel) else self.model ) + # parametrization_method = ( + # ParametrizationMethod.STANDARD + # if isinstance(self.config.model.init_method, RandomInit) + # else ParametrizationMethod.SPECTRAL_MUP + # ) + parametrization_method = ( - ParametrizationMethod.STANDARD - if isinstance(self.config.model.init_method, RandomInit) - else ParametrizationMethod.SPECTRAL_MUP + ParametrizationMethod.SPECTRAL_MUP + if isinstance(self.config.model.init_method, SpectralMupInit) + else ParametrizationMethod.STANDARD ) # Init optimizer @@ -306,11 +312,12 @@ def pre_training(self, *args, **kwargs): rank=0, ) - current_time = datetime.datetime.now().strftime("%d/%m/%Y_%H:%M:%S") + datetime.datetime.now().strftime("%d/%m/%Y_%H:%M:%S") if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: wandb.init( project=self.config.general.project, - name=f"{current_time}_{self.config.general.run}", + # name=f"{current_time}_{self.config.general.run}", + name=f"{self.config.general.run}", config={"nanotron_config": self.config.as_dict()}, ) # wandb.watch(self.model, log="all") @@ -428,6 +435,12 @@ def train( prof = get_profiler(config=self.config) torch.cuda.empty_cache() + rank_to_monitor = ( + dist.get_rank(group=self.parallel_context.dp_pg) == 0 + and dist.get_rank(group=self.parallel_context.tp_pg) == 0 + ) + constants.IS_RANK_TO_MONITOR = rank_to_monitor + with prof: for self.iteration_step in range(self.start_iteration_step + 1, self.config.tokens.train_steps + 1): constants.GLOBAL_STEP = self.iteration_step @@ -435,10 +448,14 @@ def train( if isinstance(prof, torch.profiler.profile): prof.step() - if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: + if ( + self.iteration_step - 1 + ) % constants.LOG_STATE_INTERVAL == 0 and constants.IS_RANK_TO_MONITOR is True: from nanotron.debug.monitor import monitor_nanotron_model - nn_logs, nn_handles = monitor_nanotron_model(self.model, self.parallel_context) + nn_logs, nn_handles = monitor_nanotron_model( + run_name=self.config.general.run, model=self.model, parallel_context=self.parallel_context + ) self.iteration_start_time = time.time() self._update_dataloader_based_on_training_stages(dataloader_or_dls) @@ -452,7 +469,9 @@ def train( if (self.iteration_step - 1) % self.config.logging.iteration_step_info_interval == 0: self.train_step_logs(outputs=outputs, loss_avg=loss_avg) - if (self.iteration_step - 1) % constants.LOG_STATE_INTERVAL == 0: + if ( + self.iteration_step - 1 + ) % constants.LOG_STATE_INTERVAL == 0 and constants.IS_RANK_TO_MONITOR is True: from nanotron.debug.monitor import convert_logs_to_flat_logs if dist.get_rank(self.parallel_context.world_pg) == self.logger_ranks[0] and wandb is not None: From 962a8e1969a6ed0759b216e8c53ba4be67bd49f0 Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Wed, 3 Jul 2024 11:16:43 +0000 Subject: [PATCH 38/43] it works, backup for exp 57 --- .gitignore | 5 + debug_dataset.ipynb | 1515 ++ debug_exp33.ipynb | 67 + debug_exp34.ipynb | 265 + debug_infini_ckp.ipynb | 0 debug_modeling_code.ipynb | 1407 ++ debug_needle_dataset.ipynb | 220 + draft.ipynb | 79 + .../configs/280m_llama_1024_ctx_infini.yaml | 108 + .../exp10_8b_llama3_32k_ctx_and_4m_bs.yaml | 198 + .../exp11_8b_llama3_32k_ctx_and_4m_bs.yaml | 198 + .../exp12_8b_llama3_8k_ctx_and_4m_bs.yaml | 186 + .../exp13_8b_llama3_8k_ctx_and_4m_bs.yaml | 186 + ...p14_8b_llama3_8k_ctx_length_and_2m_bs.yaml | 198 + ...p15_8b_llama3_1k_ctx_length_and_1m_bs.yaml | 198 + ...p16_8b_llama3_4k_ctx_length_and_1m_bs.yaml | 213 + .../exp17/exp17_8b_llama3_8k_ctx_length.yaml | 197 + ...8_1b_llama2_100k_ctx_length_and_2m_bs.yaml | 245 + .../exp18_1b_llama2_finetune_needle.yaml | 257 + ...19_1b_llama2_32k_ctx_length_and_2m_bs.yaml | 245 + .../configs/exp19/exp19_finetuning.yaml | 228 + ...2k_ctx_length_and_2k_seglen_and_2m_bs.yaml | 245 + ...20_1b_llama2_32k_ctx_length_and_2m_bs.yaml | 268 + ...xt_and_2k_segment_length_and_finetune.yaml | 184 + .../configs/exp20/test_train.yaml | 258 + ...4k_ctx_length_and_1k_seglen_and_2m_bs.yaml | 227 + ...4k_ctx_length_and_1k_seglen_and_2m_bs.yaml | 227 + ...4k_ctx_length_and_1k_seglen_and_2m_bs.yaml | 227 + ...k_seglen_and_2m_bs_and_orig_doremi_lr.yaml | 227 + .../configs/exp25/config.yaml | 245 + ...k_ctx_length_and_256_seglen_and_2m_bs.yaml | 230 + ...k_ctx_length_and_256_seglen_and_2m_bs.yaml | 230 + ..._200m_llama2_256_ctx_length_and_2m_bs.yaml | 236 + ..._200m_llama2_256_ctx_length_and_2m_bs.yaml | 240 + .../configs/exp29/main.yaml | 219 + .../configs/exp29/ref.yaml | 219 + ..._200m_llama2_256_ctx_length_and_2m_bs.yaml | 236 + ..._200m_llama2_256_ctx_length_and_2m_bs.yaml | 240 + ...ength_and_64_segment_length_and_2m_bs.yaml | 240 + .../configs/exp33/debug_config.yaml | 265 + ...ength_and_64_segment_length_and_2m_bs.yaml | 240 + .../exp33/exp33_debug_with_no_warmup.yaml | 265 + ...gth_and_8192_segment_length_and_2m_bs.yaml | 171 + ...ma_per_source_upsampling_long_samples.yaml | 187 + ..._and_2m_bs_and_finetuning_needle_task.yaml | 171 + ...gth_and_8192_segment_length_and_2m_bs.yaml | 170 + ...ength_and_2m_bs_and_needle_finetuning.yaml | 209 + ...ength_and_64_segment_length_and_2m_bs.yaml | 192 + ...and_64_segment_length_and_constant_lr.yaml | 267 + ...d_custom_lr_0.001_for_balance_factors.yaml | 241 + .../configs/exp38/exp38_debug.yaml | 241 + ...d_custom_lr_0.002_for_balance_factors.yaml | 241 + ..._custom_lr_0.0005_for_balance_factors.yaml | 241 + ...custom_lr_0.00025_for_balance_factors.yaml | 241 + ...ength_and_2m_bs_and_global_lr_0.00015.yaml | 241 + ..._256_ctx_length_and_global_lr_0.00015.yaml | 236 + ...ngth_and_2m_bs_and_global_lr_0.000075.yaml | 241 + ..._and_global_lr_0.00015_and_10k_warmup.yaml | 241 + ...th_and_2m_bs_and_global_lr_0.00001875.yaml | 241 + ...h_and_2m_bs_and_global_lr_0.000009375.yaml | 241 + .../exp5/exp5_8b_llama3_original_config.yaml | 179 + ...0375_and_balance_factor_lr_0.00001875.yaml | 241 + ...0000375_and_balance_factor_lr_0.00015.yaml | 241 + ...0000375_and_balance_factor_lr_0.00015.yaml | 247 + ...0000375_and_balance_factor_lr_0.00015.yaml | 247 + ..._1.0e-5_and_balance_factor_lr_0.00015.yaml | 176 + ...lr_1.0e-5_and_balance_factor_lr_0.001.yaml | 176 + ...r_1.0e-5_and_balance_factor_lr_0.0025.yaml | 176 + ....01_and_balance_factor_0_weight_decay.yaml | 179 + ...005_and_balance_factor_0_weight_decay.yaml | 179 + .../configs/exp6/exp6_llama3_8b_config.yaml | 198 + .../configs/exp7/exp7_llama3_8b_config.yaml | 198 + .../exp8/exp8_llama3_8b_infini_config.yaml | 99 + .../configs/exp9/exp9_llama3_8b_config.yaml | 198 + .../configs/nouamane_config.yaml | 122 + .../configs/ref_280m_1024_ctx.yaml | 107 + .../configs/ref_llama3_8b_config.yaml | 214 + .../debug_amount_of_change_in_weight.ipynb | 1119 ++ .../data/exp34/debug_balance_factors.ipynb | 14842 ++++++++++++++++ .../data/exp34/debug_finetune_data.ipynb | 344 + .../data/exp34/debug_optimizer.ipynb | 242 + .../data/exp34/debug_weights.ipynb | 4534 +++++ .../data/exp34/hope.ipynb | 1975 ++ .../tokenization/executor.pik | Bin 0 -> 2674 bytes .../tokenization/launch_script.slurm | 16 + ...ize_finetune_data_to_nanotron_format.ipynb | 20 + .../exp34/tokenize_finetunine_data_to_s3.py | 106 + examples/infinite-context-length/hope.ipynb | 1528 ++ .../scripts/run_16k_passkey_evals.sh | 13 + .../scripts/run_32k_evals.sh | 38 + .../scripts/run_evals.sh | 8 + .../run_generate_16k_passkey_eval_data.sh | 29 + ...un_generate_16k_passkey_finetuning_data.sh | 42 + .../scripts/run_passkey_eval.py | 293 + .../templates/training_data.py | 1 + .../templates/training_date.py | 1 + llama3_generation.ipynb | 121 + run_evals_32_ctx.sh | 0 run_generate.py | 483 +- run_train.py | 16 +- src/nanotron/config/config.py | 5 + src/nanotron/debug/monitor.py | 69 +- src/nanotron/generation/decode_.py | 808 + src/nanotron/helpers.py | 3 +- src/nanotron/models/llama.py | 12 +- src/nanotron/optim/gradient_accumulator.py | 30 +- src/nanotron/optim/named_optimizer.py | 20 + src/nanotron/trainer.py | 12 +- 108 files changed, 45034 insertions(+), 69 deletions(-) create mode 100644 debug_dataset.ipynb create mode 100644 debug_exp33.ipynb create mode 100644 debug_exp34.ipynb create mode 100644 debug_infini_ckp.ipynb create mode 100644 debug_modeling_code.ipynb create mode 100644 debug_needle_dataset.ipynb create mode 100644 draft.ipynb create mode 100644 examples/infinite-context-length/configs/280m_llama_1024_ctx_infini.yaml create mode 100644 examples/infinite-context-length/configs/exp10/exp10_8b_llama3_32k_ctx_and_4m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp11/exp11_8b_llama3_32k_ctx_and_4m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp12/exp12_8b_llama3_8k_ctx_and_4m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp13/exp13_8b_llama3_8k_ctx_and_4m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp14/exp14_8b_llama3_8k_ctx_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp15/exp15_8b_llama3_1k_ctx_length_and_1m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp16/exp16_8b_llama3_4k_ctx_length_and_1m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp17/exp17_8b_llama3_8k_ctx_length.yaml create mode 100644 examples/infinite-context-length/configs/exp18/exp18_1b_llama2_100k_ctx_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp18/exp18_1b_llama2_finetune_needle.yaml create mode 100644 examples/infinite-context-length/configs/exp19/exp19_1b_llama2_32k_ctx_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp19/exp19_finetuning.yaml create mode 100644 examples/infinite-context-length/configs/exp20/exp20_1b_llama2_32k_ctx_length_and_2k_seglen_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp20/exp20_1b_llama2_32k_ctx_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp20/exp20_32k_context_and_2k_segment_length_and_finetune.yaml create mode 100644 examples/infinite-context-length/configs/exp20/test_train.yaml create mode 100644 examples/infinite-context-length/configs/exp21/exp21_1b_llama2_4k_ctx_length_and_1k_seglen_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp22/exp22_1b_llama2_4k_ctx_length_and_1k_seglen_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp23/exp23_200m_llama2_4k_ctx_length_and_1k_seglen_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp24/exp24_1b_llama2_4k_ctx_length_and_1k_seglen_and_2m_bs_and_orig_doremi_lr.yaml create mode 100644 examples/infinite-context-length/configs/exp25/config.yaml create mode 100644 examples/infinite-context-length/configs/exp26/exp26_200m_llama2_1k_ctx_length_and_256_seglen_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp27/exp27_200m_llama2_1k_ctx_length_and_256_seglen_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp28/exp28_ref_200m_llama2_256_ctx_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp29/exp29_200m_llama2_256_ctx_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp29/main.yaml create mode 100644 examples/infinite-context-length/configs/exp29/ref.yaml create mode 100644 examples/infinite-context-length/configs/exp30/exp30_ref_200m_llama2_256_ctx_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp31/exp31_200m_llama2_256_ctx_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp32/exp32_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp33/debug_config.yaml create mode 100644 examples/infinite-context-length/configs/exp33/exp33_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp33/exp33_debug_with_no_warmup.yaml create mode 100644 examples/infinite-context-length/configs/exp34/exp34_8b_llama_16384_ctx_length_and_8192_segment_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp34/exp34_8b_llama_16384_ctx_length_and_8192_segment_length_and_2m_bs_and_finetuning_SlimPajama_per_source_upsampling_long_samples.yaml create mode 100644 examples/infinite-context-length/configs/exp34/exp34_8b_llama_16384_ctx_length_and_8192_segment_length_and_2m_bs_and_finetuning_needle_task.yaml create mode 100644 examples/infinite-context-length/configs/exp35/exp35_8b_llama_16384_ctx_length_and_8192_segment_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp35/exp35_8b_llama_16384_ctx_length_and_8192_segment_length_and_2m_bs_and_needle_finetuning.yaml create mode 100644 examples/infinite-context-length/configs/exp36/exp36_200m_infini_gqa_llama2_256_ctx_length_and_64_segment_length_and_2m_bs.yaml create mode 100644 examples/infinite-context-length/configs/exp37/exp37_debug_200b_llama_and_256_ctx_length_and_64_segment_length_and_constant_lr.yaml create mode 100644 examples/infinite-context-length/configs/exp38/exp38_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_custom_lr_0.001_for_balance_factors.yaml create mode 100644 examples/infinite-context-length/configs/exp38/exp38_debug.yaml create mode 100644 examples/infinite-context-length/configs/exp39/exp39_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_custom_lr_0.002_for_balance_factors.yaml create mode 100644 examples/infinite-context-length/configs/exp40/exp40_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_custom_lr_0.0005_for_balance_factors.yaml create mode 100644 examples/infinite-context-length/configs/exp41/exp41_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_custom_lr_0.00025_for_balance_factors.yaml create mode 100644 examples/infinite-context-length/configs/exp43/exp43_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_global_lr_0.00015.yaml create mode 100644 examples/infinite-context-length/configs/exp44/exp44_200m_ref_llama2_256_ctx_length_and_global_lr_0.00015.yaml create mode 100644 examples/infinite-context-length/configs/exp45/exp45_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_global_lr_0.000075.yaml create mode 100644 examples/infinite-context-length/configs/exp46/exp46_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_global_lr_0.00015_and_10k_warmup.yaml create mode 100644 examples/infinite-context-length/configs/exp48/exp48_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_global_lr_0.00001875.yaml create mode 100644 examples/infinite-context-length/configs/exp49/exp49_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_global_lr_0.000009375.yaml create mode 100644 examples/infinite-context-length/configs/exp5/exp5_8b_llama3_original_config.yaml create mode 100644 examples/infinite-context-length/configs/exp50/exp50_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_global_lr_0.0000375_and_balance_factor_lr_0.00001875.yaml create mode 100644 examples/infinite-context-length/configs/exp51/exp51_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_global_lr_0.0000375_and_balance_factor_lr_0.00015.yaml create mode 100644 examples/infinite-context-length/configs/exp52/exp52_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_orig_tanh_act_and_randn_init_and_global_lr_0.0000375_and_balance_factor_lr_0.00015.yaml create mode 100644 examples/infinite-context-length/configs/exp53/exp53_200m_infini_llama2_256_ctx_length_and_64_segment_length_and_2m_bs_and_hard_sigmoid_act_and_zeros_init_and_global_lr_0.0000375_and_balance_factor_lr_0.00015.yaml create mode 100644 examples/infinite-context-length/configs/exp54/exp54_8b_llama_16384_ctx_length_and_8192_segment_length_and_2m_bs_and_global_lr_1.0e-5_and_balance_factor_lr_0.00015.yaml create mode 100644 examples/infinite-context-length/configs/exp55/exp55_8b_llama_16384_ctx_length_and_8192_segment_length_and_1.3m_bs_and_global_lr_1.0e-5_and_balance_factor_lr_0.001.yaml create mode 100644 examples/infinite-context-length/configs/exp56/exp56_8b_llama_16384_ctx_length_and_8192_segment_length_and_1.3m_bs_and_global_lr_1.0e-5_and_balance_factor_lr_0.0025.yaml create mode 100644 examples/infinite-context-length/configs/exp57/exp57_8b_llama_1024_ctx_length_and_64_segment_length_and_100k_bs_and_global_lr_1.0e-5_and_balance_factor_lr_0.01_and_balance_factor_0_weight_decay.yaml create mode 100644 examples/infinite-context-length/configs/exp58/exp58_8b_llama_1024_ctx_length_and_64_segment_length_and_100k_bs_and_global_lr_1.0e-5_and_balance_factor_lr_0.005_and_balance_factor_0_weight_decay.yaml create mode 100644 examples/infinite-context-length/configs/exp6/exp6_llama3_8b_config.yaml create mode 100644 examples/infinite-context-length/configs/exp7/exp7_llama3_8b_config.yaml create mode 100644 examples/infinite-context-length/configs/exp8/exp8_llama3_8b_infini_config.yaml create mode 100644 examples/infinite-context-length/configs/exp9/exp9_llama3_8b_config.yaml create mode 100644 examples/infinite-context-length/configs/nouamane_config.yaml create mode 100644 examples/infinite-context-length/configs/ref_280m_1024_ctx.yaml create mode 100644 examples/infinite-context-length/configs/ref_llama3_8b_config.yaml create mode 100644 examples/infinite-context-length/data/exp34/debug_amount_of_change_in_weight.ipynb create mode 100644 examples/infinite-context-length/data/exp34/debug_balance_factors.ipynb create mode 100644 examples/infinite-context-length/data/exp34/debug_finetune_data.ipynb create mode 100644 examples/infinite-context-length/data/exp34/debug_optimizer.ipynb create mode 100644 examples/infinite-context-length/data/exp34/debug_weights.ipynb create mode 100644 examples/infinite-context-length/data/exp34/hope.ipynb create mode 100644 examples/infinite-context-length/data/exp34/tokenization_logs/tokenization/executor.pik create mode 100644 examples/infinite-context-length/data/exp34/tokenization_logs/tokenization/launch_script.slurm create mode 100644 examples/infinite-context-length/data/exp34/tokenize_finetune_data_to_nanotron_format.ipynb create mode 100644 examples/infinite-context-length/data/exp34/tokenize_finetunine_data_to_s3.py create mode 100644 examples/infinite-context-length/hope.ipynb create mode 100644 examples/infinite-context-length/scripts/run_16k_passkey_evals.sh create mode 100755 examples/infinite-context-length/scripts/run_32k_evals.sh create mode 100644 examples/infinite-context-length/scripts/run_evals.sh create mode 100755 examples/infinite-context-length/scripts/run_generate_16k_passkey_eval_data.sh create mode 100644 examples/infinite-context-length/scripts/run_generate_16k_passkey_finetuning_data.sh create mode 100644 examples/infinite-context-length/scripts/run_passkey_eval.py create mode 100644 examples/infinite-context-length/templates/training_data.py create mode 100644 examples/infinite-context-length/templates/training_date.py create mode 100644 llama3_generation.ipynb create mode 100644 run_evals_32_ctx.sh create mode 100644 src/nanotron/generation/decode_.py diff --git a/.gitignore b/.gitignore index 985a3136..2b7bb23b 100644 --- a/.gitignore +++ b/.gitignore @@ -165,3 +165,8 @@ checkpoints/ wandb/ *.pkl examples/infinite-context-length/*.txt + +*.json +*.arrow +*.txt +*.out diff --git a/debug_dataset.ipynb b/debug_dataset.ipynb new file mode 100644 index 00000000..7a8bab85 --- /dev/null +++ b/debug_dataset.ipynb @@ -0,0 +1,1515 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/admin/home/phuc_nguyen/miniconda3/envs/nanotron-dev/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from transformers import AutoTokenizer" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "tokenizer = AutoTokenizer.from_pretrained(\"lvwerra/the-tokenizer-v1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# TEXT = \"\"\"\n", + "# Mr. and Mrs. Dursley, of number four, Privet Drive, were proud to say\n", + "# that they were perfectly normal, thank you very much. They were the last\n", + "# people you'd expect to be involved in anything strange or mysterious,\n", + "# because they just didn't hold with such nonsense.\n", + "\n", + "# Mr. Dursley was the director of a firm called Grunnings, which made\n", + "# drills. He was a big, beefy man with hardly any neck, although he did\n", + "# have a very large mustache. Mrs. Dursley was thin and blonde and had\n", + "# nearly twice the usual amount of neck, which came in very useful as she\n", + "# spent so much of her time craning over garden fences, spying on the\n", + "# neighbors. The Dursleys had a small son called Dudley and in their\n", + "# opinion there was no finer boy anywhere.\n", + "\n", + "# The Dursleys had everything they wanted, but they also had a secret, and\n", + "# their greatest fear was that somebody would discover it. They didn't\n", + "# think they could bear it if anyone found out about the Potters. Mrs.\n", + "# Potter was Mrs. Dursley's sister, but they hadn't met for several years;\n", + "# in fact, Mrs. Dursley pretended she didn't have a sister, because her\n", + "# sister and her good-for-nothing husband were as unDursleyish as it was\n", + "# possible to be. The Dursleys shuddered to think what the neighbors would\n", + "# say if the Potters arrived in the street. The Dursleys knew that the\n", + "# Potters had a small son, too, but they had never even seen him. This boy\n", + "# was another good reason for keeping the Potters away; they didn't want\n", + "# Dudley mixing with a child like that.\n", + "\n", + "# When Mr. and Mrs. Dursley woke up on the dull, gray Tuesday our story\n", + "# starts, there was nothing about the cloudy sky outside to suggest that\n", + "# strange and mysterious things would soon be happening all over the\n", + "# country. Mr. Dursley hummed as he picked out his most boring tie for\n", + "# work, and Mrs. Dursley gossiped away happily as she wrestled a screaming\n", + "# Dudley into his high chair.\n", + "\n", + "# None of them noticed a large, tawny owl flutter past the window.\n", + "\n", + "# At half past eight, Mr. Dursley picked up his briefcase, pecked Mrs.\n", + "# Dursley on the cheek, and tried to kiss Dudley good-bye but missed,\n", + "# because Dudley was now having a tantrum and throwing his cereal at the\n", + "# walls. \"Little tyke,\" chortled Mr. Dursley as he left the house. He got\n", + "# into his car and backed out of number four's drive.\n", + "\n", + "# It was on the corner of the street that he noticed the first sign of\n", + "# something peculiar -- a cat reading a map. For a second, Mr. Dursley\n", + "# didn't realize what he had seen -- then he jerked his head around to\n", + "# look again. There was a tabby cat standing on the corner of Privet\n", + "# Drive, but there wasn't a map in sight. What could he have been thinking\n", + "# of? It must have been a trick of the light. Mr. Dursley blinked and\n", + "# stared at the cat. It stared back. As Mr. Dursley drove around the\n", + "# corner and up the road, he watched the cat in his mirror. It was now\n", + "# reading the sign that said Privet Drive -- no, looking at the sign; cats\n", + "# couldn't read maps or signs. Mr. Dursley gave himself a little shake and\n", + "# put the cat out of his mind. As he drove toward town he thought of\n", + "# nothing except a large order of drills he was hoping to get that day.\n", + "\n", + "# But on the edge of town, drills were driven out of his mind by something\n", + "# else. As he sat in the usual morning traffic jam, he couldn't help\n", + "# noticing that there seemed to be a lot of strangely dressed people\n", + "# about. People in cloaks. Mr. Dursley couldn't bear people who dressed in\n", + "# funny clothes -- the getups you saw on young people! He supposed this\n", + "# was some stupid new fashion. He drummed his fingers on the steering\n", + "# wheel and his eyes fell on a huddle of these weirdos standing quite\n", + "# close by. They were whispering excitedly together. Mr. Dursley was\n", + "# enraged to see that a couple of them weren't young at all; why, that man\n", + "# had to be older than he was, and wearing an emerald-green cloak! The\n", + "# nerve of him! But then it struck Mr. Dursley that this was probably some\n", + "# silly stunt -- these people were obviously collecting for something...\n", + "# yes, that would be it. The traffic moved on and a few minutes later, Mr.\n", + "# Dursley arrived in the Grunnings parking lot, his mind back on drills.\n", + "# \"\"\"\n", + "\n", + "TEXT = \"\"\"\n", + "The problem provided is derived from the 1980 American High School Mathematics Examination (AHSME), specifically problem number 17. This problem requires knowledge of complex numbers and algebraic manipulations. We will break down the solution into smaller steps and explain the underlying mathematical principles. Complex numbers can be represented as ordered pairs (a, b) or in the form of a + bi, where a and b are real numbers, and i is the square root of -1. When squaring i, you get (-1). Let's examine the given expression more closely: (n + i)^4 = n^4 + 4in³ - 6n² - 4in + 1 For this expression to result in an integer value, both its real and imaginary components must equal integers. First, let us focus on the imaginary part of the expression: 4in³ - 4in. For these terms to cancel out when adding the whole expression, they need to be equivalent; hence: 4in³ - 4in = 0 Now, factor out 4in: 4in(n² - 1) = 0 The equation above implies two possible scenarios. Either 4in equals zero, which means n = 0 since i cannot equal zero. Alternatively, n² - 1 could equal zero, leading to n = ±1. These three potential values for n warrant further investigation. Let's substitute them back into the original expression (n + i)^4 to verify if it indeed yields integer results: 1. If n = 0, then (0 + i)^4 = i^4 = -1 (integer) 2. If n = 1, then (1 + i)^4 = 1 + 4i - 6 - 4i + 1 = -4 + i(-4 + 4i) = -4 (integer) 3. If n = -1, then ((-1) + i)^4 = (-1)^4 + 4i(-1)³ - 6(-1)² - 4i(-1) + 1 = 1 - 4i - 6 + 4i + 1 = -4 (integer) Since all three possibilities yield integer results, our answer is (D): 3.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "tokens = tokenizer.encode(TEXT)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "488" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(tokens)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nThe problem provided is derived from the 1980 American High School Mathematics Examination (AHSME), specifically problem number 17. This problem requires knowledge of complex numbers and algebraic manipulations. We will break down the solution into smaller steps and explain the underlying mathematical principles. Complex numbers can be represented as ordered pairs (a, b) or in the form of a + bi, where a and b are real numbers, and i is the square root of -1. When squaring i, you get (-1). Let's examine the given expression more closely: (n + i)^4 = n^4 + 4in³ - 6n² - 4in + 1 For this expression to result in an integer value, both its real and imaginary components must equal integers. First, let us focus on the imaginary part of the expression: 4in³ - 4in. For these terms\"" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tokenizer.decode(tokens[:192])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_dataset\n", + "from transformers import AutoTokenizer" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading readme: 100%|███████████████████████████████████████████████████████| 423/423 [00:00<00:00, 4.26MB/s]\n", + "Downloading data: 100%|████████████████████████████████████████████████████████| 173k/173k [00:00<00:00, 788kB/s]\n", + "Generating train split: 100%|████████████████████████████████████████████| 21/21 [00:00<00:00, 234.97 examples/s]\n" + ] + } + ], + "source": [ + "data = load_dataset(\"nanotron/needle_in_a_hay_stack_finetuning_dataset\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key............................................................................................... . The pass key is 10733. Remember it. 10733 is the pass key. The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\n", + "The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\n", + "The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\n", + "The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\n", + "The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\n", + "The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roarThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails.. \n", + "\n", + "What is the pass key? The pass key is 10733.\n" + ] + } + ], + "source": [ + "print(data[\"train\"][0][\"prompt\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "tokenizer = AutoTokenizer.from_pretrained(\"lvwerra/the-tokenizer-v1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "32768" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(tokenizer.encode(data[\"train\"][0][\"prompt\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The pass key is 32569. Remember it. 32569 is the pass key. The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The ur \\n\\nWhat is the pass key? The pass key is \"" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tokenizer.decode(tokenizer.encode(data[\"train\"][0][\"prompt\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"There is an important info hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about the important information there. The pass key is 32569. Remember it. 32569 is the pass key. The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.The mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.The stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.The waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.The city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The ur \\n\\nWhat is the pass key? The pass key is \"" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[\"train\"][0][\"prompt\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_from_disk\n", + "data_disk = load_from_disk(\"/fsx/phuc/projects/nanotron/examples/infinite-context-length/needle_finetune_datasets/needle_finetuning_ctx_len_32768_and_depth_10_and_id_2\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on............................................................................................... The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The pass key is 476229534971. Remember it. 476229534971 is the pass key.. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban. \\n\\nWhat is the pass key? The pass key is 476229534971.\"" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_disk[0][\"prompt\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Merge datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/admin/home/phuc_nguyen/miniconda3/envs/nanotron-dev/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from datasets import load_dataset, DatasetDict, Dataset\n", + "import os\n", + "\n", + "# Specify the path containing the dataset folders\n", + "path = \"/fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/finetune_data\"\n", + "\n", + "# Get a list of all dataset folders\n", + "dataset_folders = [folder for folder in os.listdir(path) if os.path.isdir(os.path.join(path, folder))]" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "357" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(dataset_folders)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_from_disk\n", + "\n", + "# # Load each dataset and store them in a dictionary\n", + "# datasets = {}\n", + "# for folder in dataset_folders:\n", + "# dataset_path = os.path.join(path, folder)\n", + "# # dataset = load_dataset(\"datasets.Dataset.load_from_disk\", data_dir=dataset_path)\n", + "# dataset = load_from_disk(dataset_path)\n", + "# datasets[folder] = dataset\n", + "\n", + "datasets = []\n", + "for folder in dataset_folders:\n", + " dataset_path = os.path.join(path, folder)\n", + " dataset = load_from_disk(dataset_path)\n", + " datasets.append(dataset)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import concatenate_datasets\n", + "merged_dataset = concatenate_datasets(datasets)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... <|begin_of_text|>The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow<|begin_of_text|>. The pass key is 294713. Remember it. 294713 is the pass key. caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in t. \\n\\nWhat is the pass key? The pass key is 294713.\"" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merged_dataset[0][\"prompt\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Saving the dataset (0/1 shards): 0%| | 0/3570 [00:00 4\u001b[0m \u001b[43mdata_list\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43madd\u001b[49m\u001b[43m(\u001b[49m\u001b[43mexample\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'dict'" + ] + } + ], + "source": [ + "unique_answers = set()\n", + "for split in dataset.keys():\n", + " for example in dataset[split]:\n", + " answer = example[\"answer\"]\n", + " unique_answers.add(answer)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/debug_exp33.ipynb b/debug_exp33.ipynb new file mode 100644 index 00000000..f3ad3c88 --- /dev/null +++ b/debug_exp33.ipynb @@ -0,0 +1,67 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_from_disk" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# DATA_PATH = \"/fsx/phuc/projects/nanotron/examples/infinite-context-length/exp33_eval_data/needle_eval_ctx_len_1024_and_depth_20_and_id_0\"\n", + "# DATA_PATH = \"/fsx/phuc/projects/nanotron/examples/infinite-context-length/exp33_eval_data/needle_eval_ctx_len_1024_and_depth_0_and_id_0\"\n", + "DATA_PATH = \"/fsx/phuc/projects/nanotron/examples/infinite-context-length/exp33_eval_data/needle_eval_ctx_len_1024_and_depth_90_and_id_0\"" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "data = load_from_disk(DATA_PATH)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on............................................................... The leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world is at peace under the celestial blanket.\\nThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The ocean's embrace is calming.\\nThe leaves rustle in the wind. The birds chirp their melodies. The squirrels scamper up the trees. Nature's symphony plays on. Life thrives in the forest.\\nThe city bustles with energy. The skyscrapers touch the clouds. The streets are alive with people. Horns honk and engines roar.. The pass key is 3. Remember it. 3 is the pass key. The urban jungle never sleeps.\\nThe mountains stand tall and proud. The snow caps their peaks. The valleys are lush and green. Hikers traverse the trails. Adventure awaits in the wilderness.\\nThe stars twinkle in the night sky. The moon casts its gentle glow. The crickets sing their lullabies. Fireflies dance in the darkness. The world iThe waves crash against the shore. The seagulls soar overhead. The sand is warm beneath my feet. I breathe in the salty air. The. \\n\\nWhat is the pass key? The pass key is \"" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[0][\"prompt\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/debug_exp34.ipynb b/debug_exp34.ipynb new file mode 100644 index 00000000..f7d9d97c --- /dev/null +++ b/debug_exp34.ipynb @@ -0,0 +1,265 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_from_disk" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "DATA_PATH = \"/fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/eval_data/needle_eval_and_16384_ctx_and_depth_5_and_id_0\"\n", + "# DATA_PATH = \"/fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/needle_eval_and_16300_ctx_and_depth_0_and_id_0\"" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "Directory /fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/eval_data/needle_eval_and_16384_ctx_and_depth_5_and_id_0 not found", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[21], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[43mload_from_disk\u001b[49m\u001b[43m(\u001b[49m\u001b[43mDATA_PATH\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/nanotron-dev/lib/python3.10/site-packages/datasets/load.py:2630\u001b[0m, in \u001b[0;36mload_from_disk\u001b[0;34m(dataset_path, fs, keep_in_memory, storage_options)\u001b[0m\n\u001b[1;32m 2628\u001b[0m fs, _, _ \u001b[38;5;241m=\u001b[39m fsspec\u001b[38;5;241m.\u001b[39mget_fs_token_paths(dataset_path, storage_options\u001b[38;5;241m=\u001b[39mstorage_options)\n\u001b[1;32m 2629\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m fs\u001b[38;5;241m.\u001b[39mexists(dataset_path):\n\u001b[0;32m-> 2630\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFileNotFoundError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDirectory \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdataset_path\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m not found\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 2631\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m fs\u001b[38;5;241m.\u001b[39misfile(posixpath\u001b[38;5;241m.\u001b[39mjoin(dataset_path, config\u001b[38;5;241m.\u001b[39mDATASET_INFO_FILENAME)) \u001b[38;5;129;01mand\u001b[39;00m fs\u001b[38;5;241m.\u001b[39misfile(\n\u001b[1;32m 2632\u001b[0m posixpath\u001b[38;5;241m.\u001b[39mjoin(dataset_path, config\u001b[38;5;241m.\u001b[39mDATASET_STATE_JSON_FILENAME)\n\u001b[1;32m 2633\u001b[0m ):\n\u001b[1;32m 2634\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m Dataset\u001b[38;5;241m.\u001b[39mload_from_disk(dataset_path, keep_in_memory\u001b[38;5;241m=\u001b[39mkeep_in_memory, storage_options\u001b[38;5;241m=\u001b[39mstorage_options)\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: Directory /fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/eval_data/needle_eval_and_16384_ctx_and_depth_5_and_id_0 not found" + ] + } + ], + "source": [ + "data = load_from_disk(DATA_PATH)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. The pass key is 208. Remember it. 208 is the pass key.. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back agai. \\n\\nWhat is the pass key? The pass key is '" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[0][\"prompt\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'id': '5c55ddd7-09c9-4a0b-9530-08085463f1b1',\n", + " 'prompt': 'There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. The pass key is 208. Remember it. 208 is the pass key.. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back agai. \\n\\nWhat is the pass key? The pass key is ',\n", + " 'answer': 208,\n", + " 'context_length': 16384,\n", + " 'num_tokens': 16169,\n", + " 'depth_percent': 5}" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Merge datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_dataset, DatasetDict, Dataset\n", + "import os\n", + "\n", + "# Specify the path containing the dataset folders\n", + "path = \"/fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/eval_data\"\n", + "\n", + "# Get a list of all dataset folders\n", + "dataset_folders = [folder for folder in os.listdir(path) if os.path.isdir(os.path.join(path, folder))]" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "356" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(dataset_folders)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_from_disk\n", + "\n", + "# # Load each dataset and store them in a dictionary\n", + "# datasets = {}\n", + "# for folder in dataset_folders:\n", + "# dataset_path = os.path.join(path, folder)\n", + "# # dataset = load_dataset(\"datasets.Dataset.load_from_disk\", data_dir=dataset_path)\n", + "# dataset = load_from_disk(dataset_path)\n", + "# datasets[folder] = dataset\n", + "\n", + "datasets = []\n", + "for folder in dataset_folders:\n", + " dataset_path = os.path.join(path, folder)\n", + " dataset = load_from_disk(dataset_path)\n", + " datasets.append(dataset)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import concatenate_datasets\n", + "merged_dataset = concatenate_datasets(datasets)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Saving the dataset (1/1 shards): 100%|██████████████████████████████████████| 712/712 [00:00<00:00, 4258.32 examples/s]\n" + ] + } + ], + "source": [ + "\n", + "merged_dataset.save_to_disk(\"/fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/merged_needle_16k_eval_dataset\")" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "new_data = load_from_disk(\"/fsx/phuc/projects/nanotron/examples/infinite-context-length/data/exp34/merged_needle_16k_eval_dataset\")" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'id': 'fe9d62dd-f3d5-4842-901f-ad4a86db0929',\n", + " 'prompt': 'There is a pass key hidden inside a lot of irrelevant text. Find it and memorize them. I will quiz you about what is the pass key later on. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The. The pass key is 25255. Remember it. 25255 is the pass key. sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go. There and back again. The grass is green. The sky is blue. The sun is yellow. Here we go The grass is green. The sky is blue. The sun is yellow. Here we go. There and back ag. \\n\\nWhat is the pass key? The pass key is ',\n", + " 'answer': 25255,\n", + " 'context_length': 16384,\n", + " 'num_tokens': 15782,\n", + " 'depth_percent': 75}" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_data[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Creating parquet from Arrow format: 100%|████████████████████████████████████████████████| 1/1 [00:00<00:00, 20.40ba/s]\n", + "Uploading the dataset shards: 100%|██████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.86it/s]\n" + ] + }, + { + "data": { + "text/plain": [ + "CommitInfo(commit_url='https://huggingface.co/datasets/nanotron/llama3-16k-passkey-retrieval-eval/commit/d334373af87a8a2e3f3e47c4fc3d58d81b0783bb', commit_message='Upload dataset', commit_description='', oid='d334373af87a8a2e3f3e47c4fc3d58d81b0783bb', pr_url=None, pr_revision=None, pr_num=None)" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_data.push_to_hub(\n", + " repo_id=\"nanotron/llama3-16k-passkey-retrieval-eval\",\n", + " # repo_type=\"dataset\",\n", + " # private=True, # Set to False if you want the dataset to be public\n", + " # token=\"your_access_token\"\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/debug_infini_ckp.ipynb b/debug_infini_ckp.ipynb new file mode 100644 index 00000000..e69de29b diff --git a/debug_modeling_code.ipynb b/debug_modeling_code.ipynb new file mode 100644 index 00000000..8f4c281b --- /dev/null +++ b/debug_modeling_code.ipynb @@ -0,0 +1,1407 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import torch" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "INFINI_MODEL = \"/fsx/phuc/projects/nanotron/debug/nn_states/acts/model_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_MODEL = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states/acts/model_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "INFINI_TOKEN_EMBEDDING = \"/fsx/phuc/projects/nanotron/debug/nn_states/acts/model.token_position_embeddings_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_TOKEN_EMBEDDING = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states/acts/model.token_position_embeddings_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "infini_model_acts = torch.load(INFINI_MODEL)\n", + "ref_model_acts = torch.load(REF_MODEL)\n", + "\n", + "infini_token_embedding_acts = torch.load(INFINI_TOKEN_EMBEDDING)\n", + "ref_token_embedding_acts = torch.load(REF_TOKEN_EMBEDDING)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-0.0469, -0.0186, -0.0439, ..., 0.0469, -0.0197, -0.0157],\n", + " [-0.0527, 0.0161, 0.0659, ..., 0.0079, -0.0142, 0.0410],\n", + " [-0.0327, -0.0166, -0.0159, ..., -0.0082, -0.0483, 0.0405],\n", + " ...,\n", + " [ 0.0488, -0.0177, 0.0162, ..., -0.0177, -0.0109, 0.0183],\n", + " [ 0.0244, 0.0160, -0.0165, ..., 0.0415, -0.0172, -0.0171],\n", + " [-0.0251, -0.0232, 0.0300, ..., 0.0179, 0.0212, -0.0339]],\n", + "\n", + " [[-0.0527, 0.0161, 0.0659, ..., 0.0079, -0.0142, 0.0410],\n", + " [-0.0094, 0.0840, 0.0172, ..., -0.0036, -0.0486, -0.0299],\n", + " [-0.0325, -0.0767, 0.0601, ..., -0.0552, -0.0079, 0.0315],\n", + " ...,\n", + " [-0.0359, -0.0145, 0.0581, ..., -0.0157, -0.0312, 0.0125],\n", + " [-0.0325, -0.0767, 0.0601, ..., -0.0552, -0.0079, 0.0315],\n", + " [-0.0075, -0.0366, 0.0645, ..., 0.0605, -0.0114, 0.0359]]],\n", + " device='cuda:0', dtype=torch.bfloat16, requires_grad=True)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_token_embedding_acts[\"input_embeds\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([2, 256, 1024]), torch.Size([256, 2, 1024]))" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_token_embedding_acts[\"input_embeds\"].shape, ref_token_embedding_acts[\"input_embeds\"].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-0.0469, -0.0186, -0.0439, -0.0566],\n", + " [-0.0527, 0.0161, 0.0659, -0.0195]],\n", + "\n", + " [[-0.0527, 0.0161, 0.0659, -0.0195],\n", + " [-0.0094, 0.0840, 0.0172, -0.0193]],\n", + "\n", + " [[-0.0327, -0.0166, -0.0159, -0.0060],\n", + " [-0.0325, -0.0767, 0.0601, -0.0275]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0.0488, -0.0177, 0.0162, 0.0131],\n", + " [-0.0359, -0.0145, 0.0581, -0.0449]],\n", + "\n", + " [[ 0.0244, 0.0160, -0.0165, 0.0216],\n", + " [-0.0325, -0.0767, 0.0601, -0.0275]],\n", + "\n", + " [[-0.0251, -0.0232, 0.0300, 0.0028],\n", + " [-0.0075, -0.0366, 0.0645, 0.0540]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_token_embedding_acts[\"input_embeds\"].transpose(0, 1)[:, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-0.0469, -0.0186, -0.0439, -0.0566],\n", + " [-0.0527, 0.0161, 0.0659, -0.0195]],\n", + "\n", + " [[-0.0527, 0.0161, 0.0659, -0.0195],\n", + " [-0.0094, 0.0840, 0.0172, -0.0193]],\n", + "\n", + " [[-0.0327, -0.0166, -0.0159, -0.0060],\n", + " [-0.0325, -0.0767, 0.0601, -0.0275]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0.0488, -0.0177, 0.0162, 0.0131],\n", + " [-0.0359, -0.0145, 0.0581, -0.0449]],\n", + "\n", + " [[ 0.0244, 0.0160, -0.0165, 0.0216],\n", + " [-0.0325, -0.0767, 0.0601, -0.0275]],\n", + "\n", + " [[-0.0251, -0.0232, 0.0300, 0.0028],\n", + " [-0.0075, -0.0366, 0.0645, 0.0540]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_token_embedding_acts[\"input_embeds\"][:, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "torch.allclose(infini_token_embedding_acts[\"input_embeds\"].transpose(0, 1), ref_token_embedding_acts[\"input_embeds\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-0.0156, 0.0437, 0.0312, -0.0518],\n", + " [ 0.0260, 0.0148, -0.0427, 0.0388],\n", + " [ 0.0160, 0.0601, 0.0188, -0.0165],\n", + " [-0.0549, -0.0052, -0.0292, 0.0164],\n", + " [ 0.0240, -0.0006, 0.0042, 0.0010]]], device='cuda:0',\n", + " dtype=torch.bfloat16)" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_token_embedding_acts[\"input_embeds\"][:, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-0.0156, 0.0437, 0.0312, -0.0518],\n", + " [ 0.0260, 0.0148, -0.0427, 0.0388],\n", + " [ 0.0160, 0.0601, 0.0188, -0.0165],\n", + " [-0.0549, -0.0052, -0.0292, 0.0164],\n", + " [ 0.0240, -0.0006, 0.0042, 0.0010]]], device='cuda:0',\n", + " dtype=torch.bfloat16)" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_token_embedding_acts[\"input_embeds\"][:, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Input layer norm" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "INFINI_BLOCK_1_INPUT_LN = \"/fsx/phuc/projects/nanotron/debug/nn_states/acts/model.decoder.0.pp_block.input_layernorm_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_BLOCK_1_INPUT_LN = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states/acts/model.decoder.0.pp_block.input_layernorm_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_block_1_input_ln = torch.load(INFINI_BLOCK_1_INPUT_LN)\n", + "ref_block_1_input_ln = torch.load(REF_BLOCK_1_INPUT_LN)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(tensor([[[-0.4727, 1.3203, 0.9453, -1.5625],\n", + " [ 0.8320, 0.4746, -1.3672, 1.2422],\n", + " [ 0.5352, 2.0156, 0.6289, -0.5547],\n", + " [-1.7188, -0.1641, -0.9141, 0.5117],\n", + " [ 0.7539, -0.0176, 0.1328, 0.0317]]], device='cuda:0',\n", + " dtype=torch.bfloat16),\n", + " tensor([[[-0.4727, 1.3203, 0.9453, -1.5625]],\n", + " \n", + " [[ 0.8320, 0.4746, -1.3672, 1.2422]],\n", + " \n", + " [[ 0.5352, 2.0156, 0.6289, -0.5547]],\n", + " \n", + " [[-1.7188, -0.1641, -0.9141, 0.5117]],\n", + " \n", + " [[ 0.7539, -0.0176, 0.1328, 0.0317]]], device='cuda:0',\n", + " dtype=torch.bfloat16))" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_block_1_input_ln[:, :, :4], ref_block_1_input_ln[:, :, :4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QKV" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "INFINI_BLOCK_0_QKV = \"/fsx/phuc/projects/nanotron/debug/nn_states_with_bs_2/acts/model.decoder.0.pp_block.attn.qkv_proj_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "# INFINI_AFTER_FIX_BLOCK_0_QKV = \"/fsx/phuc/projects/nanotron/debug/nn_states_after_fix/acts/model.decoder.0.pp_block.attn.qkv_proj_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "REF_BLOCK_0_QKV = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states_with_bs_2/acts/model.decoder.0.pp_block.attn.qkv_proj_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_block_0_qkv = torch.load(INFINI_BLOCK_0_QKV)\n", + "# infini_after_fix_block_0_qkv = torch.load(INFINI_AFTER_FIX_BLOCK_0_QKV)\n", + "ref_block_0_qkv = torch.load(REF_BLOCK_0_QKV)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([2, 256, 1536]), torch.Size([256, 2, 1536]))" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_block_0_qkv.shape, ref_block_0_qkv.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "torch.allclose(infini_block_0_qkv.transpose(0, 1), ref_block_0_qkv)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QKV embeddings before pos" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "INFINI_Q_BEFORE_POS = \"/fsx/phuc/projects/nanotron/debug/nn_states_with_bs_2/acts/query_states_before_pos_tp_rank_0.pt\"\n", + "INFINI_Q_BEFORE_POS_AFTER_TRANSPOSE_QKV = \"/fsx/phuc/projects/nanotron/debug/nn_states_with_bs_2_and_transpose_qkv/acts/query_states_before_pos_tp_rank_0.pt\"\n", + "\n", + "REF_Q_BEFORE_POS = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states_with_bs_2/acts/query_states_before_pos_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_q_before_pos = torch.load(INFINI_Q_BEFORE_POS)\n", + "infini_q_before_pos_and_after_transpose_qkv = torch.load(INFINI_Q_BEFORE_POS_AFTER_TRANSPOSE_QKV)\n", + "ref_q_before_pos = torch.load(REF_Q_BEFORE_POS)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([2, 256, 4, 128]),\n", + " torch.Size([2, 256, 4, 128]),\n", + " torch.Size([2, 256, 4, 128]))" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_q_before_pos.shape, infini_q_before_pos_and_after_transpose_qkv.shape, ref_q_before_pos.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[[-1.1719, 0.1797],\n", + " [ 0.9023, -0.0422],\n", + " [-1.3672, -1.0312],\n", + " [-0.3594, -0.8594]],\n", + "\n", + " [[-0.5703, -2.5469],\n", + " [ 0.8164, 0.8906],\n", + " [ 0.1514, -1.6484],\n", + " [-0.9492, 0.6250]]],\n", + "\n", + "\n", + " [[[-0.6367, -0.1973],\n", + " [ 0.9062, -0.5859],\n", + " [-0.0515, -1.3359],\n", + " [-1.5234, 1.4375]],\n", + "\n", + " [[-0.5469, -0.5742],\n", + " [-0.3770, -0.1777],\n", + " [-0.1553, -0.8945],\n", + " [ 0.1445, -0.2490]]]], device='cuda:0', dtype=torch.bfloat16,\n", + " grad_fn=)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_q_before_pos[:, :2, :, :2]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[[-1.1719, 0.1797],\n", + " [ 0.9023, -0.0422],\n", + " [-1.3672, -1.0312],\n", + " [-0.3594, -0.8594]],\n", + "\n", + " [[ 1.3594, -0.5586],\n", + " [-0.0435, -0.2393],\n", + " [ 0.1060, -1.3516],\n", + " [ 0.5703, 0.9883]]],\n", + "\n", + "\n", + " [[[ 1.4922, -0.4570],\n", + " [ 0.3145, -0.5000],\n", + " [-0.1885, -0.9414],\n", + " [ 1.1172, 0.5938]],\n", + "\n", + " [[-2.2969, 0.5039],\n", + " [ 0.0071, 0.5664],\n", + " [ 0.3242, 0.5742],\n", + " [ 1.7422, -0.6758]]]], device='cuda:0', dtype=torch.bfloat16,\n", + " grad_fn=)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_q_before_pos[:, :2, :, :2]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[[-1.1719, 0.1797],\n", + " [ 0.9023, -0.0422],\n", + " [-1.3672, -1.0312],\n", + " [-0.3594, -0.8594]],\n", + "\n", + " [[ 1.3594, -0.5586],\n", + " [-0.0435, -0.2393],\n", + " [ 0.1060, -1.3516],\n", + " [ 0.5703, 0.9883]]],\n", + "\n", + "\n", + " [[[ 1.4922, -0.4570],\n", + " [ 0.3145, -0.5000],\n", + " [-0.1885, -0.9414],\n", + " [ 1.1172, 0.5938]],\n", + "\n", + " [[-2.2969, 0.5039],\n", + " [ 0.0071, 0.5664],\n", + " [ 0.3242, 0.5742],\n", + " [ 1.7422, -0.6758]]]], device='cuda:0', dtype=torch.bfloat16,\n", + " grad_fn=)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_q_before_pos_and_after_transpose_qkv[:, :2, :, :2]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "torch.testing.assert_close(infini_q_before_pos_and_after_transpose_qkv, ref_q_before_pos, atol=0.05, rtol=0.03)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QKV embeddings after pos" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "INFINI_Q_AFTER_POS = \"/fsx/phuc/projects/nanotron/debug/nn_states_with_bs_2/acts/query_states_after_pos_tp_rank_0.pt\"\n", + "REF_Q_AFTER_POS = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states_with_bs_2/acts/query_states_after_pos_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_q_after_pos = torch.load(INFINI_Q_AFTER_POS)\n", + "ref_q_after_pos = torch.load(REF_Q_AFTER_POS)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([512, 4, 128]), torch.Size([512, 4, 128]))" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_q_after_pos.shape, ref_q_after_pos.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-1.1719, 0.1797, 1.0469, -0.9727],\n", + " [ 0.9023, -0.0422, -0.2871, -0.1855],\n", + " [-1.3672, -1.0312, 1.5859, -0.0500],\n", + " [-0.3594, -0.8594, -1.9844, -1.1875]],\n", + "\n", + " [[-0.5703, -2.5469, 0.4590, 0.6172],\n", + " [ 0.8164, 0.8906, -0.3906, -2.1250],\n", + " [ 0.1514, -1.6484, 0.2988, 0.2070],\n", + " [-0.9492, 0.6250, -0.8242, -0.9023]],\n", + "\n", + " [[ 0.6133, -0.8125, 1.1094, -1.0625],\n", + " [-0.5547, -0.1572, -1.9922, -0.7266],\n", + " [ 0.2891, -1.0234, -1.4062, -1.1875],\n", + " [ 0.8867, 1.5625, 0.2119, -1.5000]],\n", + "\n", + " [[-2.0312, -0.4199, 0.0208, 0.6680],\n", + " [ 0.0962, 0.2910, -0.8867, -0.6016],\n", + " [ 0.0991, -0.4004, 0.8477, -0.4434],\n", + " [-1.1562, 1.0938, 1.9219, -2.6406]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_q_after_pos[:4, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-1.1719, 0.1797, 1.0469, -0.9727],\n", + " [ 0.9023, -0.0422, -0.2871, -0.1855],\n", + " [-1.3672, -1.0312, 1.5859, -0.0500],\n", + " [-0.3594, -0.8594, -1.9844, -1.1875]],\n", + "\n", + " [[ 1.3594, -0.5586, 0.3867, -0.3340],\n", + " [-0.0435, -0.2393, -1.0078, 0.6758],\n", + " [ 0.1060, -1.3516, -0.0374, -0.5859],\n", + " [ 0.5703, 0.9883, 0.5430, -1.0781]],\n", + "\n", + " [[-0.1748, -2.0000, 0.2852, -0.0811],\n", + " [ 0.4785, 0.8359, -0.7344, -1.1641],\n", + " [ 0.6523, -1.2344, 1.3984, 1.4297],\n", + " [-0.5078, 0.5000, 0.1543, -1.9609]],\n", + "\n", + " [[ 0.5117, 0.6289, -0.9453, -0.2773],\n", + " [-1.1094, 0.8984, -1.1953, -0.5078],\n", + " [ 0.4531, -0.7031, 0.9336, -1.9062],\n", + " [-0.2559, -0.5156, 0.7266, 0.1602]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_q_after_pos[:4, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "torch.allclose(infini_q_after_pos, ref_q_after_pos)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Output projection in attention" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "INFINI_BLOCK_0_ATTN_O_PROJ = \"/fsx/phuc/projects/nanotron/debug/nn_states/acts/model.decoder.0.pp_block.attn.o_proj_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_BLOCK_0_ATTN_O_PROJ = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states/acts/model.decoder.0.pp_block.attn.o_proj_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_block_0_attn_o_proj = torch.load(INFINI_BLOCK_0_ATTN_O_PROJ)\n", + "ref_block_0_attn_o_proj = torch.load(REF_BLOCK_0_ATTN_O_PROJ)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([256, 2, 1024]), torch.Size([256, 2, 1024]))" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_block_0_attn_o_proj.shape, ref_block_0_attn_o_proj.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[ 0.3438, -0.9492, 0.2832, 0.4766],\n", + " [ 0.0796, 0.0781, 0.3281, 0.0620]],\n", + "\n", + " [[-0.3379, 0.3047, 0.5430, -0.2949],\n", + " [ 0.2354, -0.2988, 0.6602, -0.3340]],\n", + "\n", + " [[ 0.4922, -0.1660, 0.0825, -0.6328],\n", + " [ 0.1621, -0.3633, 0.4121, 0.3984]],\n", + "\n", + " [[ 1.0234, -0.4199, -0.2656, -0.4004],\n", + " [ 0.4727, -0.5547, 0.5000, -0.6641]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_block_0_attn_o_proj[:4, :4, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[ 0.3438, -0.9492, 0.2832, 0.4766],\n", + " [ 0.0796, 0.0781, 0.3281, 0.0620]],\n", + "\n", + " [[ 0.0723, 0.0486, 0.3301, 0.0781],\n", + " [ 0.2041, -0.4375, 0.4199, -0.5117]],\n", + "\n", + " [[-0.2715, 0.3301, 0.4766, -0.2715],\n", + " [ 0.0933, -0.6016, 0.8164, 0.1963]],\n", + "\n", + " [[ 0.2256, -0.3301, 0.6680, -0.2949],\n", + " [-0.0248, -0.7422, 0.1206, 0.2432]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_block_0_attn_o_proj[:4, :4, :4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Output of attention" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "INFINI_BLOCK_0_ATTN = \"/fsx/phuc/projects/nanotron/debug/nn_states/acts/model.decoder.0.pp_block.attn.attention_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "# INFINI_AFTER_FIX_BLOCK_0_ATTN = \"/fsx/phuc/projects/nanotron/debug/nn_states_after_fix/acts/model.decoder.0.pp_block.attn.attention_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_BLOCK_0_ATTN = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states/acts/model.decoder.0.pp_block.attn.attention_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_block_0_attn = torch.load(INFINI_BLOCK_0_ATTN)\n", + "# infini_after_fix_block_0_attn = torch.load(INFINI_AFTER_FIX_BLOCK_0_ATTN)\n", + "ref_block_0_attn = torch.load(REF_BLOCK_0_ATTN)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([512, 4, 128]), torch.Size([512, 4, 128]))" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_block_0_attn.shape, ref_block_0_attn.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-0.8594, -1.2344, 1.8359, 1.7500],\n", + " [-0.5586, 0.4570, 0.0569, -0.7695],\n", + " [-0.5195, -0.5312, 0.8672, -0.1211],\n", + " [-1.7891, 0.5234, -0.1914, 1.0781]],\n", + "\n", + " [[ 0.0708, -0.0742, 0.2324, 1.0312],\n", + " [-0.4902, -1.1484, -0.6484, -0.6875],\n", + " [ 0.5000, 1.3516, 0.2354, -0.0811],\n", + " [-0.2314, -2.1250, 1.0547, 0.5664]],\n", + "\n", + " [[ 0.3047, 0.0173, 0.1953, -0.4941],\n", + " [-0.0486, 0.1279, 1.5781, 0.3594],\n", + " [ 0.0085, -0.1689, 0.5664, 1.0234],\n", + " [-0.7383, -0.4258, 1.4688, -0.0294]],\n", + "\n", + " [[ 0.7188, -0.2852, -0.3516, -0.2412],\n", + " [-0.1973, 0.5000, 0.6484, 0.0136],\n", + " [ 1.1094, 0.2559, 0.8359, -1.3203],\n", + " [ 0.0864, 1.1406, -0.6914, -0.0488]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_block_0_attn[:4, :4, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-0.8594, -1.2344, 1.8359, 1.7500],\n", + " [-0.5586, 0.4570, 0.0569, -0.7695],\n", + " [-0.5195, -0.5312, 0.8672, -0.1211],\n", + " [-1.7891, 0.5234, -0.1914, 1.0781]],\n", + "\n", + " [[-1.0234, -0.5547, 0.9883, -1.3516],\n", + " [ 0.2002, -0.0874, 1.7266, -0.8320],\n", + " [-0.9180, 1.1484, 0.7148, -1.0703],\n", + " [ 0.3457, 1.3281, 0.6562, -1.2344]],\n", + "\n", + " [[-0.0025, -0.1035, 0.2793, 0.8633],\n", + " [-0.4668, -1.1406, -0.5820, -0.6914],\n", + " [-0.2305, 1.2656, 0.4785, -0.5977],\n", + " [-0.1924, -2.0469, 1.0547, 0.4980]],\n", + "\n", + " [[ 0.1748, -0.5938, 0.2090, -0.0942],\n", + " [ 0.6680, -0.9531, 0.5781, -0.4355],\n", + " [-0.1426, 0.0674, -0.5469, -0.7578],\n", + " [-0.8398, 1.1094, 1.0469, -0.4863]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_block_0_attn[:4, :4, :4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### MLP" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "INFINI_MLP = \"/fsx/phuc/projects/nanotron/debug/nn_states/acts/model.decoder.0.pp_block.mlp_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "# INFINI_AFTER_FIX_MLP = \"/fsx/phuc/projects/nanotron/debug/nn_states_after_fix/acts/model.decoder.0.pp_block.mlp_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_MLP = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states/acts/model.decoder.0.pp_block.mlp_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_mlp = torch.load(INFINI_MLP)\n", + "# infini_after_mlp = torch.load(INFINI_AFTER_FIX_MLP)\n", + "ref_mlp = torch.load(REF_MLP)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([1, 5, 1024]), torch.Size([5, 2, 1024]))" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_mlp[\"hidden_states\"].shape, ref_mlp[\"hidden_states\"].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[-0.5117, -0.7969, 0.1934, 0.0223],\n", + " [-0.5117, -0.7969, 0.1934, 0.0223]],\n", + "\n", + " [[ 0.3066, 0.1270, -0.3691, 0.2656],\n", + " [ 0.3066, 0.1270, -0.3691, 0.2656]],\n", + "\n", + " [[ 0.0693, -0.1641, 0.5742, 0.1885],\n", + " [ 0.0693, -0.1641, 0.5742, 0.1885]],\n", + "\n", + " [[ 0.6602, -0.2910, 0.2988, 0.5703],\n", + " [ 0.6602, -0.2910, 0.2988, 0.5703]],\n", + "\n", + " [[ 0.7188, 0.2539, -0.5859, 0.2734],\n", + " [ 0.7188, 0.2539, -0.5859, 0.2734]]], device='cuda:0',\n", + " dtype=torch.bfloat16)" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_mlp[\"hidden_states\"][:, :, :4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final layer norm" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "INFINI_FINAL_LN = \"/fsx/phuc/projects/nanotron/debug/nn_states/acts/model.final_layer_norm_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "# INFINI_AFTER_FIX_FINAL_LN = \"/fsx/phuc/projects/nanotron/debug/nn_states_after_fix/acts/model.final_layer_norm_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_FINAL_LN = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states/acts/model.final_layer_norm_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_final_ln = torch.load(INFINI_FINAL_LN)\n", + "# infini_after_fix_final_ln = torch.load(INFINI_AFTER_FIX_FINAL_LN)\n", + "ref_final_ln = torch.load(REF_FINAL_LN)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([2, 256, 1024]), torch.Size([256, 2, 1024]))" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_final_ln[\"hidden_states\"].shape, ref_final_ln[\"hidden_states\"].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[ 1.3828, -0.3906, 0.6797, -1.1094],\n", + " [ 0.7852, -0.9180, 1.0078, 0.0518],\n", + " [ 1.1953, -0.2139, 1.3438, -0.4922],\n", + " ...,\n", + " [ 0.9648, -1.0234, 1.4062, -1.3672],\n", + " [ 1.5703, -0.6641, 0.8789, -0.5234],\n", + " [ 0.0859, -0.8125, 1.5781, -0.3887]],\n", + "\n", + " [[ 2.1406, 0.0620, 0.5781, 0.6680],\n", + " [ 2.0469, -0.2949, 1.2500, 0.6172],\n", + " [ 0.5156, -0.4512, 0.9922, -0.3691],\n", + " ...,\n", + " [ 2.2969, -0.2129, 0.7539, -0.5508],\n", + " [ 1.2422, -1.4219, 0.3672, 0.4180],\n", + " [ 1.5547, -0.6133, 0.7305, -0.6016]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_final_ln[\"hidden_states\"][:, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[ 1.3828, -0.3906, 0.6797, -1.1094],\n", + " [ 0.5352, -0.4629, 0.3730, -1.0312]],\n", + "\n", + " [[ 0.7656, -0.3809, 0.4316, -1.0391],\n", + " [ 1.5547, 0.7852, 0.0095, -0.3027]],\n", + "\n", + " [[ 2.4531, 0.2871, 1.3594, 0.6445],\n", + " [ 0.5156, -0.7578, 0.9258, -1.9688]],\n", + "\n", + " ...,\n", + "\n", + " [[ 1.3906, 0.1445, 0.3867, -0.7812],\n", + " [ 0.4590, -0.6289, 0.7266, 0.4590]],\n", + "\n", + " [[ 0.1885, -0.9336, 0.3164, -0.8477],\n", + " [ 0.1367, -0.8008, 0.9219, -0.9961]],\n", + "\n", + " [[ 1.0703, -0.2910, 1.8047, 0.3730],\n", + " [ 2.1562, -0.8477, 0.9844, -0.4492]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_final_ln[\"hidden_states\"][:, :, :4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Logits" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "INFINI_LOGITS = \"/fsx/phuc/projects/nanotron/debug/nn_states_with_bs_1/acts/model.lm_head_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "# INFINI_AFTER_FIX_LOGITS = \"/fsx/phuc/projects/nanotron/debug/nn_states_after_fix/acts/model.lm_head_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_LOGITS = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states_with_bs_1/acts/model.lm_head_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_logits = torch.load(INFINI_LOGITS)\n", + "# infini_after_fix_logits = torch.load(INFINI_AFTER_FIX_LOGITS)\n", + "ref_logits = torch.load(REF_LOGITS)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([1, 256, 24576]), torch.Size([256, 1, 24576]))" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_logits[\"logits\"].shape, ref_logits[\"logits\"].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[ 4.2188, -2.5156, -4.5312, -3.7969]],\n", + "\n", + " [[ 2.0000, -0.4043, -2.6094, -3.2500]],\n", + "\n", + " [[ 2.7656, -2.9219, -4.9062, -4.1250]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0.7266, -1.4375, -4.2188, -4.0312]],\n", + "\n", + " [[ 7.0000, -3.2500, -2.0312, -2.7812]],\n", + "\n", + " [[ 0.9531, -2.3750, -2.9844, -3.6719]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_logits[\"logits\"].transpose(0, 1)[:, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[ 4.2188, -2.5156, -4.5312, -3.7969]],\n", + "\n", + " [[ 2.0000, -0.4043, -2.6094, -3.2500]],\n", + "\n", + " [[ 2.7656, -2.9219, -4.9062, -4.1250]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0.7266, -1.4219, -4.2500, -4.0312]],\n", + "\n", + " [[ 7.0000, -3.2344, -2.0156, -2.7656]],\n", + "\n", + " [[ 0.9570, -2.3594, -2.9844, -3.6562]]], device='cuda:0',\n", + " dtype=torch.bfloat16, grad_fn=)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_logits[\"logits\"][:, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "torch.testing.assert_close(infini_logits[\"logits\"].transpose(0, 1), ref_logits[\"logits\"], rtol=0.09, atol=0.09)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sharded loss before loss" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "INFINI_SHARDED_LOGITS_STEP1 = \"/fsx/phuc/projects/nanotron/debug/nn_states/acts/step1_sharded_logits_tp_rank_0.pt\"\n", + "\n", + "REF_SHARDED_LOGITS_STEP1 = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states/acts/step1_sharded_logits_tp_rank_0.pt\"\n", + "\n", + "\n", + "infini_sharded_logits_step1 = torch.load(INFINI_SHARDED_LOGITS_STEP1)\n", + "ref_sharded_logits_step1 = torch.load(REF_SHARDED_LOGITS_STEP1)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([256, 2, 24576]), torch.Size([256, 2, 24576]))" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_sharded_logits_step1.shape, ref_sharded_logits_step1.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[ 4.2188, -2.5156, -4.5312, -3.7969],\n", + " [ 3.0156, -2.3750, -2.5312, -3.5000]],\n", + "\n", + " [[ 3.5938, -3.7500, -4.4062, -2.7500],\n", + " [ 7.5938, -3.1094, -3.3281, -5.0312]],\n", + "\n", + " [[ 2.8594, -1.6328, -4.6250, -3.9062],\n", + " [ 3.5000, -1.8828, -3.7188, -3.5469]],\n", + "\n", + " [[ 2.2344, -1.6797, -4.5938, -4.4062],\n", + " [ 3.3906, -1.3359, -2.1562, -3.9219]]], device='cuda:0',\n", + " grad_fn=)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_sharded_logits_step1[:4, :, :4]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[[ 4.2188, -2.5156, -4.5312, -3.7969],\n", + " [ 1.8438, -0.5430, -3.1250, -3.8281]],\n", + "\n", + " [[ 2.0000, -0.4043, -2.6094, -3.2500],\n", + " [ 3.2812, -2.0625, -7.0625, -5.2500]],\n", + "\n", + " [[ 2.7656, -2.9219, -4.9062, -4.1250],\n", + " [ 2.9062, -3.3438, -3.6406, -4.2188]],\n", + "\n", + " [[ 8.0625, -3.3594, -2.2969, -3.8906],\n", + " [ 2.4844, -3.9062, -5.2812, -1.9609]]], device='cuda:0',\n", + " grad_fn=)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_sharded_logits_step1[:4, :, :4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loss" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "# INFINI_LOSS = \"/fsx/phuc/projects/nanotron/debug/nn_states_with_bs_1/acts/loss.pp_block_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "INFINI_LOSS_WITH_TRANSPOSED_QKV = \"/fsx/phuc/projects/nanotron/debug/nn_states_with_bs_2_and_transpose_qkv/acts/loss_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "REF_LOSS = \"/fsx/phuc/projects/reference/nanotron/debug/nn_states_with_bs_2/acts/loss_dp_rank_0_and_pp_rank_0_and_tp_rank_0.pt\"\n", + "\n", + "\n", + "# infini_loss = torch.load(INFINI_LOSS)\n", + "infini_loss_with_transposed_qkv = torch.load(INFINI_LOSS_WITH_TRANSPOSED_QKV)\n", + "ref_loss = torch.load(REF_LOSS)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'loss': tensor(4.3787, device='cuda:0', requires_grad=True)}" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "infini_loss_with_transposed_qkv" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'loss': tensor(4.3784, device='cuda:0', requires_grad=True)}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ref_loss" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/debug_needle_dataset.ipynb b/debug_needle_dataset.ipynb new file mode 100644 index 00000000..e02263e6 --- /dev/null +++ b/debug_needle_dataset.ipynb @@ -0,0 +1,220 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/admin/home/phuc_nguyen/miniconda3/envs/nanotron-dev/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from datasets import load_dataset\n", + "from transformers import AutoTokenizer" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Resolving data files: 100%|████████████████████████████████████████████████████████████| 178/178 [00:02<00:00, 86.53it/s]\n", + "Resolving data files: 100%|████████████████████████████████████████████████████████| 178/178 [00:00<00:00, 402472.30it/s]\n" + ] + } + ], + "source": [ + "dataset = load_dataset(\"yaofu/slimpajama-per-source-length-upsample\", streaming=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "tokenizer = AutoTokenizer.from_pretrained(\"meta-llama/Llama-2-7b-hf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['input_ids', 'labels', 'source'])\n", + "[{'source': 'RedPajamaC4', 'start': 0, 'end': 120}, {'source': 'RedPajamaC4', 'start': 120, 'end': 328}, {'source': 'RedPajamaC4', 'start': 328, 'end': 551}, {'source': 'RedPajamaCommonCrawl', 'start': 551, 'end': 858}, {'source': 'RedPajamaC4', 'start': 858, 'end': 1527}, {'source': 'RedPajamaC4', 'start': 1527, 'end': 1844}, {'source': 'RedPajamaC4', 'start': 1844, 'end': 2274}, {'source': 'RedPajamaC4', 'start': 2274, 'end': 2829}, {'source': 'RedPajamaC4', 'start': 2829, 'end': 3190}, {'source': 'RedPajamaC4', 'start': 3190, 'end': 3722}, {'source': 'RedPajamaC4', 'start': 3722, 'end': 4546}, {'source': 'RedPajamaCommonCrawl', 'start': 4546, 'end': 5457}, {'source': 'RedPajamaC4', 'start': 5457, 'end': 6244}, {'source': 'RedPajamaC4', 'start': 6244, 'end': 6430}, {'source': 'RedPajamaC4', 'start': 6430, 'end': 6847}, {'source': 'RedPajamaWikipedia', 'start': 6847, 'end': 7916}, {'source': 'RedPajamaC4', 'start': 7916, 'end': 8197}, {'source': 'RedPajamaCommonCrawl', 'start': 8197, 'end': 9374}, {'source': 'RedPajamaCommonCrawl', 'start': 9374, 'end': 9924}, {'source': 'RedPajamaC4', 'start': 9924, 'end': 10132}, {'source': 'RedPajamaC4', 'start': 10132, 'end': 10249}, {'source': 'RedPajamaStackExchange', 'start': 10249, 'end': 10637}, {'source': 'RedPajamaC4', 'start': 10637, 'end': 11196}, {'source': 'RedPajamaC4', 'start': 11196, 'end': 11400}, {'source': 'RedPajamaCommonCrawl', 'start': 11400, 'end': 12990}, {'source': 'RedPajamaWikipedia', 'start': 12990, 'end': 13124}, {'source': 'RedPajamaC4', 'start': 13124, 'end': 13484}, {'source': 'RedPajamaC4', 'start': 13484, 'end': 13554}, {'source': 'RedPajamaC4', 'start': 13554, 'end': 14219}, {'source': 'RedPajamaC4', 'start': 14219, 'end': 14364}, {'source': 'RedPajamaCommonCrawl', 'start': 14364, 'end': 15152}, {'source': 'RedPajamaC4', 'start': 15152, 'end': 15229}, {'source': 'RedPajamaCommonCrawl', 'start': 15229, 'end': 15804}, {'source': 'RedPajamaC4', 'start': 15804, 'end': 15900}, {'source': 'RedPajamaC4', 'start': 15900, 'end': 16400}, {'source': 'RedPajamaCommonCrawl', 'start': 16400, 'end': 17597}, {'source': 'RedPajamaStackExchange', 'start': 17597, 'end': 18952}, {'source': 'RedPajamaC4', 'start': 18952, 'end': 19861}, {'source': 'RedPajamaC4', 'start': 19861, 'end': 19911}, {'source': 'RedPajamaC4', 'start': 19911, 'end': 20403}, {'source': 'RedPajamaC4', 'start': 20403, 'end': 20457}, {'source': 'RedPajamaCommonCrawl', 'start': 20457, 'end': 21046}, {'source': 'RedPajamaC4', 'start': 21046, 'end': 21697}, {'source': 'RedPajamaCommonCrawl', 'start': 21697, 'end': 23754}, {'source': 'RedPajamaC4', 'start': 23754, 'end': 24718}, {'source': 'RedPajamaC4', 'start': 24718, 'end': 24781}, {'source': 'RedPajamaCommonCrawl', 'start': 24781, 'end': 26459}, {'source': 'RedPajamaC4', 'start': 26459, 'end': 26664}, {'source': 'RedPajamaC4', 'start': 26664, 'end': 27355}, {'source': 'RedPajamaC4', 'start': 27355, 'end': 27509}, {'source': 'RedPajamaCommonCrawl', 'start': 27509, 'end': 28520}, {'source': 'RedPajamaC4', 'start': 28520, 'end': 29156}, {'source': 'RedPajamaC4', 'start': 29156, 'end': 29497}, {'source': 'RedPajamaCommonCrawl', 'start': 29497, 'end': 30103}, {'source': 'RedPajamaCommonCrawl', 'start': 30103, 'end': 30794}, {'source': 'RedPajamaC4', 'start': 30794, 'end': 30862}, {'source': 'RedPajamaC4', 'start': 30862, 'end': 31140}, {'source': 'RedPajamaC4', 'start': 31140, 'end': 31266}, {'source': 'RedPajamaWikipedia', 'start': 31266, 'end': 31343}, {'source': 'RedPajamaC4', 'start': 31343, 'end': 31558}, {'source': 'RedPajamaStackExchange', 'start': 31558, 'end': 31992}, {'source': 'RedPajamaWikipedia', 'start': 31992, 'end': 32070}, {'source': 'RedPajamaCommonCrawl', 'start': 32070, 'end': 35321}, {'source': 'RedPajamaC4', 'start': 35321, 'end': 35628}, {'source': 'RedPajamaStackExchange', 'start': 35628, 'end': 36126}, {'source': 'RedPajamaC4', 'start': 36126, 'end': 36441}, {'source': 'RedPajamaCommonCrawl', 'start': 36441, 'end': 37275}, {'source': 'RedPajamaC4', 'start': 37275, 'end': 37850}, {'source': 'RedPajamaCommonCrawl', 'start': 37850, 'end': 38404}, {'source': 'RedPajamaCommonCrawl', 'start': 38404, 'end': 39225}, {'source': 'RedPajamaC4', 'start': 39225, 'end': 39916}, {'source': 'RedPajamaC4', 'start': 39916, 'end': 40023}, {'source': 'RedPajamaC4', 'start': 40023, 'end': 41233}, {'source': 'RedPajamaCommonCrawl', 'start': 41233, 'end': 42488}, {'source': 'RedPajamaStackExchange', 'start': 42488, 'end': 42690}, {'source': 'RedPajamaCommonCrawl', 'start': 42690, 'end': 47008}, {'source': 'RedPajamaCommonCrawl', 'start': 47008, 'end': 48202}, {'source': 'RedPajamaC4', 'start': 48202, 'end': 48465}, {'source': 'RedPajamaC4', 'start': 48465, 'end': 52868}, {'source': 'RedPajamaC4', 'start': 52868, 'end': 53088}, {'source': 'RedPajamaCommonCrawl', 'start': 53088, 'end': 54229}, {'source': 'RedPajamaCommonCrawl', 'start': 54229, 'end': 57918}, {'source': 'RedPajamaC4', 'start': 57918, 'end': 58154}, {'source': 'RedPajamaC4', 'start': 58154, 'end': 58852}, {'source': 'RedPajamaC4', 'start': 58852, 'end': 59425}, {'source': 'RedPajamaC4', 'start': 59425, 'end': 59663}, {'source': 'RedPajamaC4', 'start': 59663, 'end': 60328}, {'source': 'RedPajamaStackExchange', 'start': 60328, 'end': 61451}, {'source': 'RedPajamaC4', 'start': 61451, 'end': 61588}, {'source': 'RedPajamaCommonCrawl', 'start': 61588, 'end': 63087}, {'source': 'RedPajamaCommonCrawl', 'start': 63087, 'end': 66947}, {'source': 'RedPajamaC4', 'start': 66947, 'end': 71335}, {'source': 'RedPajamaC4', 'start': 71335, 'end': 72293}, {'source': 'RedPajamaC4', 'start': 72293, 'end': 77723}, {'source': 'RedPajamaWikipedia', 'start': 77723, 'end': 80044}, {'source': 'RedPajamaCommonCrawl', 'start': 80044, 'end': 84721}, {'source': 'RedPajamaC4', 'start': 84721, 'end': 84966}, {'source': 'RedPajamaC4', 'start': 84966, 'end': 85158}, {'source': 'RedPajamaC4', 'start': 85158, 'end': 85340}, {'source': 'RedPajamaC4', 'start': 85340, 'end': 85440}, {'source': 'RedPajamaCommonCrawl', 'start': 85440, 'end': 90381}, {'source': 'RedPajamaC4', 'start': 90381, 'end': 90766}, {'source': 'RedPajamaC4', 'start': 90766, 'end': 90822}, {'source': 'RedPajamaCommonCrawl', 'start': 90822, 'end': 94819}, {'source': 'RedPajamaCommonCrawl', 'start': 94819, 'end': 102188}, {'source': 'RedPajamaCommonCrawl', 'start': 102188, 'end': 103837}, {'source': 'RedPajamaCommonCrawl', 'start': 103837, 'end': 104499}, {'source': 'RedPajamaC4', 'start': 104499, 'end': 104629}, {'source': 'RedPajamaWikipedia', 'start': 104629, 'end': 104833}, {'source': 'RedPajamaC4', 'start': 104833, 'end': 104913}, {'source': 'RedPajamaCommonCrawl', 'start': 104913, 'end': 105855}, {'source': 'RedPajamaStackExchange', 'start': 105855, 'end': 106660}, {'source': 'RedPajamaCommonCrawl', 'start': 106660, 'end': 106967}, {'source': 'RedPajamaC4', 'start': 106967, 'end': 107439}, {'source': 'RedPajamaC4', 'start': 107439, 'end': 108138}, {'source': 'RedPajamaCommonCrawl', 'start': 108138, 'end': 112495}, {'source': 'RedPajamaC4', 'start': 112495, 'end': 116837}, {'source': 'RedPajamaCommonCrawl', 'start': 116837, 'end': 120954}, {'source': 'RedPajamaC4', 'start': 120954, 'end': 126881}, {'source': 'RedPajamaCommonCrawl', 'start': 126881, 'end': 131072}]\n", + "131072\n" + ] + } + ], + "source": [ + "d = next(iter(dataset[\"train\"]))\n", + "print(d.keys())\n", + "print(d[\"source\"])\n", + "print(len(d[\"input_ids\"])) ## all input_ids are chunks of length 131072" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "' allons-nous apprendre plus d\\'informations ?\\net vous, qu\\'attendez-vous pour ce live ?\\napprendrons-nous enfin la présence d\\'un mode aventure ?\\nhave you ever wondered what life is like in the mushroom kingdom? if so, ask mario and luigi in real time!\\nso do a barrel roll and stop by nintendo ny today! whether you\\'re a long-time fan or you\\'re just getting started, nintendo ny has something for you! Seller or third party financing may be available for a qualified buyer.\\n> Only Perpetual Care Cemeteries in the marketplace.\\n> Thirty-five years under the current ownership.\\n> Eight prominent locations in thriving areas.\\n> State-regulated trust fund (seven-figure balance) provides nearly six-figure annual return to owners.\\n> Positioned for accelerated growth for new owners with new ideas!\\n* Increase in cremation rate provides nearly unlimited opportunities for maximizing future revenues without acquiring more land.\\n> Experienced management will stay in place if requested or to train Buyer.\\n> Office space may be leased from Seller until Buyer decides to relocate.\\n> Motivated sellers are willing to provide some seller financing to the right Buyer.\\n> Great stand-alone business or add-on for existing funeral/burial operation. The chapter provides in-depth knowledge of how children\\'s lives change when they move with their mothers into a women\\'s shelter and how the activities for children at the residence reveal and address their needs. The chapter also presents how mothers perceive the situation of their children. More children than women live at this shelter. Almost all the children are victims of violence. Most were born in Sweden, but several have mothers or fathers who were born in another country. Some of the children are subjected to honour-related violence, with threats of kidnapping. No systematic violence and security assessment at which the children can make their voices heard is ordinarily conducted at the shelter. Half of the school-age children did not attend school for several months and received home schooling only to a very limited extent. Many of the younger children did not attend preschool. Resilience can be promoted for children in the life at a shelter also by volunteers.\\nAarhus: Aarhus Universitetsforlag , 2015. German government to step in on Vattenfall sale\\nA document has emerged, indicating Germany\\'s intention to persuade Swedish utility Vattenfall not to sell its lignite power plant portfolio.\\nReuters reports that the leaked internal position paper shows that Germany\\'s economy and energy minister Sigmar Gabriel, is due to fly to Stockholm to discuss the sale of the company\\'s lignite coal-fired power plants, although no date for the talks was disclosed.\\nChancellor Merkel\\'s deputy is to argue that \"A breakup of this group as well as excessive price expectations would endanger the security of employment and the sustainability of the operating units,\" according to the document.\\n\"I am sure that the Swedish government and Stefan Lofven are aware of their responsibilities,\" he said.\\nLast month, Vattenfall\\'s new chief executive Magnus Hall said the company might put its lignite power plants and mines in Germany up for sale. This could fetch up to 3 billion euros, according to people familiar with the industry.\\nVattenfall generates about 10 per cent of Germany\\'s total power production and said it remains committed to other operations in Germany, including heat production, trading and wind power.\\nPrevious articleTablets maximising use of on-site renewables\\nNext articleJordanian solar plants secure $100m in finance The Clojurians Slack [sign up here] started as a small experiment about four years ago and has been far more successful than anyone could have imagined, with around 15K members signed up and around 1,700 members considered \"active\" on a weekly basis (which means it would cost almost $9K per month to run this as a paid service!).\\nA perennial complaint about Slack\\'s free plan is that it limits the accessible message history to just the most recent 10K messages. In a busy Slack like Clojurians that limit is hit after three or four days, heavily limiting the ability to refer back to conversations or to use the massive amount of \"knowledge\" shared there for reference – exactly as noted in the comment above.\\nThe \"original\" online Clojure community still exists and is still active on IRC (freenode), of course, and there\\'s also Braid (written in Clojure/ClojureScript!).\\nI was a bit surprised that the commenter did not mention Clojurians on Zulip because that community, started back in early November 2018, already has five hundred members and seems, to me, like the most capable alternative to Slack. It\\'s open source, hosted for free to open source communities, and \"has a significantly larger and more active development community than other modern open source group chat solutions like Mattermost, Rocket.Chat, and matrix.org.\" Read their Why Zulip? page for more information about the service and how it compares (specifically to Slack).\\nOne-way bridging between select Slack channels and Zulip streams has been in place for a while and currently about fifty of the most popular channels on Slack are available to read in Zulip streams, along with many other active streams in Zulip. This means you can try Zulip without missing out on Slack conversations – some people prefer Zulip\\'s UI just for reading Slack messages!\\nClojurians on Slack isn\\'t going away – a lot of people love the UI and don\\'t consider the message history limit to be a big deal – and if you\\'re already using Slack for work, then it makes perfect sense to also use that for your Clojure community fix (since you only need one chat client open). The Slack community isn\\'t \"official\" in any way, and you\\'re all welcome to try other chat clients, but if you feel strongly about open source and unlimited search history, check out Clojurians on Zulip and if you like it, promote it and encourage other Clojurians to join you there.\\nMe? I\\'m one of the long-time admins/moderators of Clojurians on Slack, but I\\'ve also tried each and every one of the alternatives that various community members have set up over the last four years. Clojurians on Zulip is the one I\\'ve found myself most active in and the only alternative chat client that I always have open at this point! As part of NYCHA\\'s Sandy Resiliency and Renewal Program, TCT is providing cost estimating services for the Basis of Design Study and Schematic Design of resiliency projects at three sites: Coney Island Site 8, O\\'Dwyer Gardens, and Surfside Gardens.\\nConey Island Site 8 consists of one residential building with 124 apartment units. The building\\'s heating plant, which is located below grade in the building cellar, was fully submerged during Super Storm Sandy and is non-functional. Building 6 of O\\'Dwyer Gardens, a 6.34-acre development with six residential buildings and 572 apartments, had its cellar completely flooded by the storm and now houses an inoperable boiler plant with three low pressure fire tube steam boilers. Each of Surfside Gardens\\' five buildings was subject to Sandy-related water damages and currently have non-operational boiler plants.\\nThe scope of work includes a comprehensive damage assessment; an updated scope of work to restore the buildings to their pre-disaster design, function and capacity, including MEP relocation and upgrades, a new boiler plant, roof replacements, and natural gas-fueled standby power generators; resiliency measures, energy efficiency im\\xadprovements; and optional evaluation of other resiliency and energy efficiency measures. The Colony Film Festival website is a custom designed site coded in the Bootstrap framework and templated to WordPress.\\nThe Kelly Lang Contractors website is a custom designed site coded in the Bootstrap framework and templated to WordPress.\\nThe Marietta Dance Academy website is custom designed, coded in Bootstrap and uses a custom CMS.\\nThe Dr. Steven B. England website is custom designed, coded in Bootstrap and uses a custom CMS.\\nThe logo was designed by Ohio Web Pro Design.\\nThe Willow Land Surveying website is custom designed, coded in Bootstrap and uses a custom CMS.\\nThe Main Street Amherst website is built by Ohio Web Pro Design and the website and logo was designed by Alicia Nicely of Alicia Nicely Designs. The Main Street Amherst website project won the 2012 Heritage Ohio annual award for Best Marketing Project or Event.\\nThe Fleeman Insurance Agency website is custom designed, coded in Bootstrap and uses a custom CMS.\\nThe Eve Shelter website is custom designed, coded in Bootstrap and uses a custom CMS. It also features a HTML5 interactive animation.\\nThe Business Advisory Services website is custom designed, coded in Bootstrap and uses a custom CMS.\\nThe The Mermaid\\'s Tale website is custom designed, coded in Bootstrap and uses a custom CMS.\\nWebsite for C.L. Tours includes the OWP Content Management system and a configurable tours database. C.L. Tours offers year around Motorcoach day and multi-day tours.\\nThe Ohio Dental Hygienists\\' Association website was custom designed, coded in Bootstrap and uses a custom CMS. A wide array of custom features: Auto balancing banner ad display with view/click through tracking, members area accounts sync with ADHA member\\'s reports, Member\\'s only log in and secure forms, publishing platform with search and unlimited categories and much more. Who hasn\\'t dreamed of getting that perfect wildlife shot? TripAfrica has teamed up with Pangolin Photo Safaris to put together an amazing 9 night trip including a 5 day wildlife photography course set in the stunning Chobe National Park where you will learn how to take the perfect shot in the most perfect of backdrops!\\nIt might not be a quintessentially Christmassy destination, and with temperatures soaring in to their thirties throughout much of Africa already, there certainly won\\'t be any snowy winter scenes.\\nAcacia Africa has an answer for adventurous souls in search of exotic climes in the economic downturn. A new \"Premium Overlanding\" portfolio will kick off in June 2012, the collection of tours targeted at cash strapped, discerning travellers looking to \"truck it, but not rough it\" on the continent.\\nWildlife Worldwide has a brand new, small group trip for 2011 - the two-week Botswana Explorer - taking in the highlights of this captivating country, which is surrounded by Namibia, Zambia, Zimbabwe and South Africa.\\nKamili has launched a selection of sensibly priced safaris across their portfolio that won\\'t break the bank, and with 2009 rates frozen until the end of 2010 there\\'s no need to wait for last minute offers to enjoy outstanding African safari experiences.\\nYou can now get a whole new perspective on the African savannah as Ranch Rider\\'s 2010 portfolio covers South Africa and Botswana.\\nDiscover South Africa, Botswana and Zimbabwe in January and save £233 per person. Combining the wildlife of Chobe National Park with the spectacular scenery of Victoria Falls, visit the Khama Rhino Sanctuary and explore Okavango Delta by mokoro (dug-out canoe).\\nForget World Cup mania, go ahead of the crowds and visit Africa now to take advantage of the Green Season says Africa expert, Kamili.\\nEver wanted to be a safari guide?\\nTuli Safari Lodge and Okavango Guiding School (OGS) have partnered to offer visitors to Botswana a holiday experience with a difference – a fascinating, action-packed adventure that gives a taste of life as a safari guide. The goal of the project is to create an operational data intelligence platform capable of monitoring, alerting, reporting. I am currently considering Elastic (ELK stack) + FileBeats.\\nAfter being selected & signing a nondisclosure agreement, you will be working to translate my experience and insights through the lens of your technical prowess & experience with big data & machine learning into a data intelligence platform.\\nPrior experience with network visualizations, algorithms, kibi, the stock market, and social media would be helpful but not required. If you have experiences in these areas, please let me know so we can discuss.\\nA realistic development & deployment roadmap including a timeline with milestones and projected budget from development to deployment.\\nI have a detailed profile of the conditions/characteristics I need to monitor.\\nI will also need a unique monitoring interface that aggregates a broad number of data sources I currently rely upon but which are currently dispersed.\\nYou should have prior successful deployments and familiarity with APIs, other technologies and plugins which may be of use and/or willing to do additional research. I want to rely on open source & free or inexpensive plugins & technologies as much as possible.\\nI will only work with someone who thoroughly understands what I do and the problems I am attempting to address. Once selected, I have a number of documents that can provide additional insights into the nature of the problem. I will also explain how I currently address the problem and can answer questions so you have a thorough understanding.\\nHi there, I have checked the details I have rich experienced with Data Science, Elasticsearch, Machine Learning. Please initiate chat so we can discuss this job. Published 04/19/2019 02:26:55 pm at 04/19/2019 02:26:55 pm in Best Price Shark Vacuum.\\nbest price shark vacuum upright vacuums shark vacuum cleaners at target shark navigator light vacuum shark vacuum cleaners at target target steam cleaner shark vacuum steam cleaner combo best carpet vacuum shark vacuum.\\ncheapest shark vacuum cleaner euro pro shark vacuum bags best price cheapest shark vacuum cleaner euro pro shark vacuum bags best price shark vacuum cleaner buy shark vacuum cleaner australia, shark vacuum cleaners on sale shark vacuum deals shark lift away shark vacuum cleaners on sale shark upright vacuum cleaner blue shark navigator vacuum cleaner price australia shark vacuum cleaners on sale , shark rocket complete corded vacuum with duoclean red hv shark rocket complete corded vacuum with duoclean red hv, amazoncom ion p lightweight cordless upright vacuum with hepa ion p lightweight cordless upright vacuum with hepa filter handheld vacuum mode and shark, best price ever shark navigator vacuum shipped was best price ever shark navigator vacuum shipped was , shark vacuum duo clean reviews attachments and tools shark rocket shark vacuum duo clean reviews shark cordless vacuum cleaner with blue shark rocket duo clean vacuum shark vacuum , best price for shark vacuum cleaner shark navigator swivel plus related post, vacuum cleaners steam mops irons home cleaning products by shark upright vacuums, vacuum cleaner lowest price mostraymondwinfo vacuum cleaner lowest price shark vacuum cleaners compare prices vacuum cleaner best deal, shark closeouts for clearance jcpenney sale, target shark vacuum shark vacuum cleaners on sale shark vacuum small target shark vacuum shark vacuum cleaners on sale shark vacuum small design vacuum full wallpaper images. Games and simulations are changing the ways in which students learn today. However, much remains unknown about the effectiveness of games to learn specific subject matter. The aim of this study was to better understand the role that games can play in learning physics. In this study, we examine what participants learned by playing Physicus-a commercial, edutainment game. Physicus seeks to teach students basic physical science concepts (related to electricity and magnetism, and light and color) by embedding these ideas in a \"save the world\" scenario. Results of our study indicate that participants, who played Physicus, did learn physics concepts compared to the control group who played a non-edutainment game. We discuss how these learning gains interacted with participants\\' motivation, enjoyment, and interest for physics and games.\\nFoster, A., Koehler, M. & Mishra, P. (2006). Game-Based Learning of Physics Content: The Effectiveness of a Physics Game for Learning Basic Physics Concepts. In E. Pearson & P. Bohman (Eds.), Proceedings of ED-MEDIA 2006--World Conference on Educational Multimedia, Hypermedia & Telecommunications (pp. 2119-2125). Orlando, FL USA: Association for the Advancement of Computing in Education (AACE). Retrieved April 20, 2019 from https://www.learntechlib.org/primary/p/23301/.\\nArdac, D., & Akaygun, S. (2004). Effectiveness of multimedia-based instruction that emphasizes molecular representations on students understanding of chemical change. Journal of Research in Science Teaching, 41(4), 317-337.\\nDe Jong, T., & Van Joolingen, W.R. (1998). Scientific discovery learning with computer simulations of conceptual domains. Review of Educational Research, 68, 179-202.\\nDiSessa, A. (1982). Unlearning Aristotelian physics: A study of knowledge-based learning. Cognitive Science, 5, 37-75.\\nHuppert, J., Lomask, S.M., & Lazarowitz, R. (2002). Computer simulations in the high school: Students cognitive stages, science process skills and academic achievement in microbiology. International Journal of Science Education, 24(8), 803-821.\\nMalone, T.W. (1981). Toward a theory of intrinsically motivating instruction. Cognitive Science, 5 (4), 333-369.\\nMcAuley, E., Duncan, T., & Tammen, V.V. (1987). Psychometric properties of the Intrinsic Motivation Inventory in a competitive sport setting: A confirmatory factor analysis. Research Quarterly for Exercise and Sport, 60, 48-58.\\nMoreno, R., & Mayer, R.E. (2002). Learning science in virtual reality multimedia environments: Role of methods and media. Journal of Educational Psychology, 94(3), 598-610.\\nTurkle, S. (1997). Seeing Through Computers. The American Prospect, 8 (31).\\nZhang, J., Chen, Q., & Reid, D.J. (2000). Simulation-based scientific discovery learning: A research on the effects of experimental support and learners\\' reasoning ability. Agência Solar Odiamaiscurto Store\\nFestival App Program Blog 1993-2020 Submissions\\nPT Contact Partners Newsletter\\n\"Anyhow, Anyway\" at Clermont - Ferrand\\n\"Uncle Thomas, Accountig for the days\" EFA finalist\\nCurtas travels around the country with award-winning films\\nOur Kingdom at the Torino Film Festival\\nAwards 28th Curtas Vila do Conde\\nCall for Entries Curtas 2021!\\nCurtas starts tomorrow!\\nDownload Curtas\\' App!\\nCurtas Online with special discount\\nBLOG \"Anyhow, Anyway\" at Clermont - Ferrand\\n\"Anyhow, Anyway\" directed by Catarina Romano is selected for the International Competition in Clermont-Ferrand International Short Film Festival, taking place between 29th January and 6th February 2021, in France\\nBLOG \"Uncle Thomas, Accountig for the days\" EFA finalist\\n\"Uncle Thomas, Accounting for the days\", Regina Pessoa\\'s latest film is one of the five nominees in the category of Best European Short Film at the 33rd edition of the European Film Academy (EFA) Awards.\\nCURTAS Curtas travels around the country with award-winning films\\nThis year, as in the previous ones, Curtas Vila do Conde tours the country again with a selection of some of the best films of this edition. The \"Best of Curtas\" will screened some of the awarded films, and the \"Curtinhas\" session, dedicated to the youngest, is composed of small and fun films thought for the whole family.\\nBLOG Our Kingdom at the Torino Film Festival\\n\"Our Kingdom\", Luis Costa\\'s latest short film, will have its italian premiere at the 38th edition of the Torino Film Festival to be held from November 20-28, in Turin.\\nCURTAS Awards 28th Curtas Vila do Conde\\nThe 28th edition of Curtas Vila do Conde was announced today at the closing ceremony of the festival. \"The Unseen River\" by Vietnamese Pham Ngoc Lân was the winner of the International Competition Great Prize. In the National Competition the big winner of the Best Film Award was Diogo Salgado with \"Noite Turva\".\\nCURTAS Call for Entries Curtas 2021!\\nThe 28th Curtas Vila do Conde – International Film Festival, taking place from 10 to 18 July 2021, announces the call for entries for new short films produced in 2020 or 2021, within the duration limit of 60 minutes, in film (35mm or 16 mm) or digital (DCP).\\nBLOG Curtas starts tomorrow!\\nThe 28th edition of Curtas de Vila do Conde starts this Saturday, October 3rd. A festival with a special format, committed to the new times, but where the actuality and urgency of the program are again the main focus of the event that wants to be the stage for the dissemination of what is best done, experienced or reinvented in short format cinema.\\nCURTAS Download Curtas\\' App!\\nThis is the easiest way to have all of Curtas\\'s programming in your hand. Get to know all the features of the festival\\'s App. The greatest of world cinema in several formats, from October 3rd to 11th, with more than 260 films from 42 countries.\\nCURTAS Curtas Online with special discount\\nDuring the weekend of October 24th and 25th, Curtas offers a 50% discount to the first 50 people who buy the pass online. Using the code \"CURTAS50\", the user will have access to 28 films until the end of Curtas Online, November 1st.\\n© 2021 Curtas Metragens, CRL Sarah Hooper is a Ph.D. student in electrical engineering who\\'s studying applications of machine learning on global health issues like malaria diagnosis.\\nAlex Ferris is a bioengineering student developing a model for the spread of disease and crop loss in cassava root.\\nAnd Alex Siegenfeld is studying how statistical physics can help us understand certain social and political phenomena, focusing on malaria in Nigeria.\\nThese are a few of the winners of a new fellowship from science education funder the Fannie and John Hertz Foundation, an interesting program that sends Ph.D. students from all sorts of scientific disciplines to spend their summers working in global health and development. Fellows work two summer internships at the Gates Foundation as part of a partnership between Hertz and the philanthropic juggernaut.\\nA round of six new fellows was announced last month after an inaugural cohort of two students in 2017. The fellowship is intended to provide students in STEM with hands-on experience in global health issues, and to inspire them to engage with such challenges. It\\'s a unique educational opportunity, but also related to a trend in science philanthropy of putting researchers from varied disciplines into new contexts, or otherwise combining different areas of study, to encourage innovative crossovers.\\nThe Hertz-Gates Fellowship in Global Health and Development is a supplemental program to the Hertz Foundation\\'s graduate fellowship, which has been running for more than 60 years. Fellows receive full tuition and a personal stipend, renewable for up to five years, and must be studying applied physical and biological sciences, mathematics or engineering at a list of participating universities.\\nTo date, there have been around 1,200 fellows, and they\\'ve gone on to secure thousands of patents and win major awards like the Breakthrough and two Nobel prizes. Hertz fellows can now apply for the Hertz-Gates Fellowship, which adds on stints at the Gates Foundation working for program teams in global health or development.\\nThe Hertz Foundation\\'s sole purpose is to support science education, and its fellowship targets one of the most challenging periods in a young researcher\\'s career. The foundation has been around since 1957, when it was established with a very 1950s-sounding intent to \"enhance the technological stature of the United States.\" It\\'s based in the wealth of John Hertz, who led a pretty fascinating life and career with various automotive companies (he founded Yellow Cab), but is probably best known for Hertz rental cars.\\nAnd you might be familiar with the Gates Foundation. While such a partnership between two foundations makes sense regardless, this does underscore just how prominent Gates is in the world of global health.\\nIt\\'s primarily an educational fellowship, but one of the more interesting components of the partnership is that mashup of many disciplines and global health work. Funder interest in introducing science researchers to a new setting is particularly relevant in biomedical and health research, and as scientists explore new applications of data and computer science. We\\'ve covered this kind of funding in the Simons Foundation\\'s Flatiron Institute, for example, which brings computer scientists, physicists and biologists under one roof. Most recently, the Wellcome Trust\\'s LEAP program seeks to back risky research, including that which crosses disciplines. Lots of movies reviewed this week including War Dogs, Purge Election Year, and Mechanic Resurrection. We also present our EPIC Winter movie preview!\\nVic has a fascinating conversation with the CEO of Image Ireland, Stephen Lohan. Get the lowdown on the VFX event of the year, happening in Dublin with some of the biggest names in visual effects in attendance.\\nBesides the event itself, the guys chat about the VFX industry in general, where it\\'s going, where it\\'s been and what\\'s coming next and of course there is an indepth discussion on the Irish VFX industry!\\nDavid Brent: Life on the Road gets slammed and we get scared silly with Lights Out. All that and more movie news than you can shake Bantha poo-doo at. As part of the official kickoff for Childhood Cancer Awareness Month, the St. Baldrick\\'s Foundation will visit the Nasdaq MarketSite in Times Square.\\nIn honor of the occasion, Bill Hogan, board member of St. Baldrick\\'s and president of WebHouse, Inc., will ring the Opening Bell. He will also be joined by St. Baldrick\\'s co-founder, Tim Kenny, along with other board members, colleagues and supporters, St. Baldrick\\'s researchers, as well as children and families directly affected by childhood cancer.\\nThe St. Baldrick\\'s Foundation is a volunteer-powered organization dedicated to funding the most promising childhood cancer research wherever it takes place. Worldwide, every 3 minutes a child is diagnosed with cancer and in the U.S., one in five will not survive. Each year, thousands of volunteers and donors in communities across the country support St. Baldrick\\'s head-shaving events and \"Do What You Want\" fundraisers in an effort to raise funds and awareness to change these devastating statistics. Since 2005, St. Baldrick\\'s has awarded 890 grants in 25 countries totaling more than $176 million.\\nThe St. Baldrick\\'s Foundation is a volunteer-powered charity committed to funding the most promising research to find cures for childhood cancers and give survivors long and healthy lives. Since 2005, St. Baldrick\\'s has awarded more than $176 million to support lifesaving research, making the Foundation the largest private funder of childhood cancer research grants. For more information about the St. Baldrick\\'s Foundation please call 1.888.899.BALD or visit www.StBaldricks.org. Adrien-Marie Legendre (Parijs, 18 september 1752 – Auteuil, 10 januari 1833) was een Franse wiskundige. Hij leverde belangrijke bijdragen aan de statistiek, de abstracte algebra, de wiskundige analyse en in het bijzonder aan de getaltheorie. Hij was een van de toonaangevende Franse wiskundigen aan het einde van de 18e en begin van de 19e eeuw, die een bloeiperiode was voor de Franse wiskunde. Hij is een van de 72 Fransen wier namen in reliëf op de Eiffeltoren zijn aangebracht.\\n\\nLegendre was een tijdgenoot van Joseph-Louis Lagrange, Pierre-Simon Laplace, Sadi Carnot en Gaspard Monge in de rumoerige period van de Franse Revolutie. Laplace, Lagrange en Legendre hebben zich volledig afzijdig gehouden van de revolutie.\\n\\nLegendre is bekend gebleven om zijn didactische verbetering in de behandeling van de elementaire meetkunde. Van 1775 tot 1780 was hij docent aan de Militaire Academie, later aan de École Normal en tot slot de École polytechnique, alle in Parijs. Het grootste deel van zijn werk werd geperfectioneerd door anderen: zijn werk aangaande wortels van veeltermen inspireerde de galoistheorie. Niels Henrik Abel bouwde in zijn werk over elliptische functies voort op het werk van Legendre. Ook Carl Friedrich Gauss maakte bij sommige van zijn resultaten op het gebied van de statistiek en de getaltheorie gebruik van het werk van Legendre.\\n\\nIn 1830 gaf hij een bewijs van de laatste stelling van Fermat voor de exponent , een bewijs dat bijna gelijktijdig door Johann Peter Gustav Lejeune Dirichlet werd gegeven in 1828. Hij had eerder het foute bewijs van Leonhard Euler voor verbeterd.\\n\\nIn de getaltheorie leverde Legendre belangrijke bijdragen, in het bijzonder tot de toepassing van de analyse op de getaltheorie. Zijn vermoeden uit 1796, voor wat nu de priemgetalstelling wordt genoemd, werd pas honderd jaar later, in 1898, door Hadamard en Charles-Jean de La Vallée Poussin bewezen. Het legendre-symbool is een andere bijdrage van hem op dit gebied.\\n\\nLegendre verrichtte een indrukwekkende hoeveelheid werk met betrekking tot elliptische functies, waaronder de classificatie van elliptische integralen.\\n\\nDe naar hem genoemde legendre-transformatie wordt in de theoretische mechanica gebruikt om dat lagrangiaanse formalisme over te zetten in het hamiltonformalisme. In de thermodynamica wordt het ook gebruikt om thermodynamische potentialen vrije energie (ofwel helmholtzenergie) en de gibbsenergie af te leiden uit de inwendige energie .\\n\\nDifferentiaalvergelijking van Legendre \\nIn 1784 vond hij de oplossing van de differentiaalvergelijking\\n\\nDe oplossing staat bekend also de legendre-polynoom\\n\\nEnkele stellingen van Legendre \\n en zijn geen van beide rationaal.\\n Het aantal priemgetallen tussen 1 en is ongeveer gelijk aan .\\n\\nHet vermoeden van Legendre \\n\\nVoor elk positief geheel getal geldt dat er tussen en minstens een priemgetal ligt.\\n\\nPortret \\nVan Legendre is geen portret bekend. Lange tijd werden artikelen en boeken over Legendre geïllustreerd met een portret van een man, gezien van opzij. Pas in 2005 werd ontdekt dat deze litho de Franse politicus Louis Legendre (1752–1797) voorstelt, en niet de wiskundige. Wel werd in 2008 een karikatuur van Legendre ontdekt.\\n\\nExterne link \\n Biografie van Legendre\\n\\nGetaltheoreticus\\nFrans wiskundige\\n18e-eeuws wiskundige\\nLid van de Académie des sciences I\\'m one of the owners of helloworld Travel Masterton and have been part of this wonderful team for 16 years. With over 30 years in the travel and airline industry I have a wealth of experience to draw on and offer to you. There is nothing like first-hand knowledge of a destination and over the years I\\'ve been fortunate enough to visit most continents in the world – and those that I haven\\'t I\\'m planning to get to! My favourite places in the world so far are Japan, Scandinavia and Turkey, followed closely by Tahiti and her beautiful islands. Vietnam was my most recent personal holiday where I travelled North to South, including a cruise on beautiful Halong Bay. The culture, food, climate and scenery of this beautiful country make it one of the hot destinations today.\\nCruising has become extremely popular over recent years. I have sailed with various cruise lines in Fiji, the Mediterranean, Canada and Alaska. It is a wonderful and relaxing way to travel.\\nI pride myself on attention to detail, and will always go the extra mile to ensure your holiday is hassle free. I welcome the opportunity to help you plan your next travel experience or cruise holiday – feel free to email me. Windows 8\\'s app restrictions are antithetical to the platform\\'s storied past of radical openness\\nby Alex Wilhelm — in Microsoft\\nIf you intended to download and play games that contain explicit content on your Microsoft Surface RT tablet, prepare for disappointment: You probably can\\'t.\\nIf you had hoped that the introduction of the Windows Store and the lack of the ability to install apps sans its use on Windows RT would not lead to Windows itself becoming a far more closed ecosystem, this is not only bad news, it\\'s a sea change in how Windows works.\\nWhat you can\\'t do\\nYes, according to the \"Windows 8 app certification requirements,\" there are heavy rules that determine what sort of app can be certified, and thus be eligible for sale in the Windows Store. Here are the two key passages that pertain to what you are simply not allowed to put in your app:\\n5.1 Your app must not contain adult content, and metadata must be appropriate for everyone\\nApps with a rating over PEGI 16, ESRB MATURE, or that contain content that would warrant such a rating, are not allowed. Metadata and other content you submit to accompany your app may contain only content that would merit a rating of PEGI 12, ESRB EVERYONE, or Windows Store 12+, or lower.\\nOh, and if you were hoping to somehow dodge this, Microsoft has thought of that already:\\n6.2 Your app must have a Windows age rating, and you must submit third-party ratings for your app if you have them\\nYou must assign a Windows Store age rating that most accurately matches your app. The Age rating page contains more detailed descriptions of the content that is suitable for each Windows Store age rating.\\nThis is not a small issue. As PC Gamer reported earlier today:\\n[T]his [set of rules] not be such a problem in the US, where relatively few games receive a mature rating, but it will be very significant in Europe, where games such as Dishonored, Skyrim, Sleeping Dogs, Assassin\\'s Creed, Call of Duty all fall foul of the restriction.\\nSomeone call Notch, he may have been right.\\nWhat made Windows great, akin to the Internet, was its openness. Now however, for a large swath of coming Windows devices – tablets running Windows RT, in which you can only snag applications via the Windows Store – that openness is over.\\nBetween you and app content on your device sits Microsoft, deciding what is fit for you to see, and what isn\\'t. This isn\\'t a free speech issue; Microsoft is free to design its products and run its services as it may, but that doesn\\'t do away with the fact that this sort of censorship is ridiculous, and unneeded.\\nHow can we know that? Simple: We\\'ve prospered and survived without it thus far, so we hardly require it. I honestly feel sorry for gamers in regions that have ratings systems that befall Redmond\\'s red lines; sorry brosef, Ballmer doesn\\'t think you should be able to play that.\\nNaturally, you could buy a tablet that runs Windows 8 proper, and have no such problems, but if Microsoft is going to push a version of Windows for the mobile use case that intends on playing nanny with your ability to execute normal tasks – like the playing of a popular, mainstream game – then something has gone wrong.\\nWhat about Apple?\\nCertainly, Apple has strict rules in terms of what sort of content you can put into its App Store. Again, that\\'s its prerogative. iOS, a very popular platform, has been locked down since its inception. When the iPhone launched – calling all builds of iPhone software iOS is loose wording, I know, but bear with me – iOS supported no third-party applications. Things have improved, but not completely.\\nThat\\'s the kicker to all of this, and why the Apple comparison is only slightly cogent: Windows is moving from complete and utter openness, to being partially closed, whilst Apple has moved from being completely to partially closed. Thus we can bemoan the decline of Windows and not fret too much about giving Apple a free pass.\\nWhat should be done?\\nMicrosoft should let adults use any damn app they want, provided that it is legal. No one is telling Microsoft to not censor child pornography. However, its blanket bans, which lean on rating systems of what I would call dubious efficacy, are asinine. Adults should be free to submit, and download any sort of app they wish.\\nChildren can be restricted to age appropriate applications until they come of age, at the behest of their parents.\\nSimple, easy, and it reopens Windows to being the platform, once again, where developers are as free as users to do as they please. We\\'re not kids, Microsoft, and we don\\'t want your false protection.\\nTop Image Credit: Michael Coté\\nRead next: Tumblr launches Photoset: An iOS-only photo sharing app that could help it lure in new users\\nMediaTek\\'s 2021 flagship chip comes with big promises: 168Hz display and ray tracing Cactus Club Café: Stephen Avenue\\nAssembledge+ has continued its ongoing collaboration with Cactus Restaurant Group in support of the Vancouver-based company\\'s expansion into Canada\\'s western provinces.\\nLocated in the dense commercial core of downtown Calgary, Stephen Avenue is a historic pedestrian mall providing an eclectic mix of boutiques and high-end retail. Looking to build on the success of their downtown Toronto flagship, the goal was to export the brand\\'s hallmark formula of upscale, inventive, and global cuisine paired with a high-energy, high-design setting,\\nAt 6,700 square feet, Cactus Club Café: Stephen Avenue accommodates up to 228 seats with an additional 1,300 square-feet and 88 seats on the wrap-around patio. The interior has been designed using a refined palette of oak, blackened steel, glass, and stone, to echo the natural materials found in the West Coast Canadian landscape, featuring oak and stone-clad walls, paired with a unique tile flooring. Long wood and curved ceiling slats inspire movement throughout the space creating a striking yet complementary contrast against the linear geometry found throughout. Furnishings include butcher-block oak tables and deep brown leather seating while glass partitions and horizontal paneling section the different dining spaces.\\nFacing the entry, the lounge and bar are illuminated by a floating display of hand-blown glass pendant lamps creating a sense of intimacy among diners. The adjacent patio features a fully retractable roof to accommodate Calgary\\'s climate year-round. Additionally, retractable floor-to-ceiling glass panels surrounding the lounge blur the lines between the indoor and outdoor experience and enables diners to interact with the heavy pedestrian traffic, as well as a large-scale steel \"Trees\" sculpture designed to reduce wind gusts between buildings. Original art is displayed throughout featuring artists Mr. Brainwash and Andy Warhol.\\nLocation: Calgary, Alberta, Canada\\nSize: 7,995 sf w/ 1,290 sf patio\\nDesign Team: David Thompson (Principal-in-Charge), Scott Walter, Wendy Gilmartin, Gregory Marin, Teagan Castelleon, Ruining Wang\\nPhotography: Tieran Green and Rick Collins We can manage any project procurement and coordination from any origin/destination, meeting the most demanding requirements, managing efficient and effective time frames, information, materials, equipment, human resources among other key elements in the complexity of the logistic system.\\nTaylor-made solutions for your cargo, on-time delivery and reasonable freight rates allow us to be an excellent choice to transport your cargo with us.\\nFrom customs, inland,warehousing, Ocean transportation to air transportation of project cargo, we can handle any project.\\nWith outstanding results, we have operated the entire logistic chain for 11 drill rigs during this running year (February 2013- February 2014). The expertise of Colfletar, the commercial agency representation of our liner services, and the contracts we hold with ports, conform the best alliance for guaranteeing excellence and accuracy in handling cargoes and projects. This High Vibration Journey has African Drums, Dancing, Libations, Spectacular Sunset & of course the Graceful Whales.\\nAvail purch; Beer – Wine – Mai Tai\\'s – Fruit Drinks – B.Y.O. Snacks!\\n**VIP INCLUDES = Early Entry Choice Seats, Champagne Welcome & Pupu\\'s!\\nDue to inclement weather the Whale Drum Cruise has been changed to Sat Feb 23rd same times! Q: Conditionally exit action Newbie question about GitHub Actions and YAML configuration.\\nI have Action with one job and more steps that perform tests and open issue if they fail. It works well.\\nNow I want to make Action conditionally failed, in purpose to update Badge of that action.\\nProblem is in the last step \"Handle exit\" that is always called although there is a condition that works for the previous step but not in this.\\nWhere I am wrong and how to conditionally do Step containing \"run\"?\\nname: Tests\\n\\non:\\n - push\\n\\njobs:\\n tests:\\n name: Tests\\n runs-on: ubuntu-latest\\n\\n steps:\\n - name: Check out Git repository\\n uses: actions/checkout@v2\\n\\n - name: Set up Node.js\\n uses: actions/setup-node@v1\\n with:\\n node-version: 14\\n\\n - name: Install dependencies\\n run: yarn install\\n\\n - name: Tests\\n id: tests\\n run: echo ::set-output name=failed::$(if expr length + \"$(yarn test 2>&1 | grep fail -i)\" > 0; then echo \"true\"; else echo \"false\"; fi)\\n\\n - name: Open Issue\\n if: steps.tests.outputs.failed == \\'true\\'\\n env:\\n GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\\n uses: JasonEtco/create-an-issue@v2\\n\\n - name: Handle exit\\n if: steps.tests.outputs.failed == \\'true\\'\\n run: exit(1)\\n\\n Today at Black Hat 2014 hacking conference, Yahoo! Chief Information Security Officer Alex Stamos announced that the company will start giving its consumers the option of end-to-end encryption in its Mail service by next year.\\nGoogle showed off a PGP-based encryption plugin for Gmail back in June. The Purple-hued company will offer encryption via a modified version of the same End-to-End browser plug-in that Google uses for PGP in Gmail, Alex Stamos told the audience at his talk titled Building Safe Systems at Scale - Lessons from Six Months at Yahoo.\\nThe PGP plugin will be native in mobile apps allowing Gmail and Yahoo mail to easily exchange encrypted email. In fact, the email providers themselves won\\'t be able to decrypt messages exchanged between its users. Only senders and recipients will be able to read the messages.\\nIn short, it means that Yahoo email users can reportedly send safe and secure messages between Yahoo users and also Gmail adherents without fear, which makes almost impossible for cyber criminals and well-resourced spying by the US government and its Five Eyes allies to read their private messages.\\nStamos (@alexstamos) said that this project has been a priority since he joined one of the world\\'s largest web providers, Yahoo six months ago. He stressed that Yahoo email encryption will be easy to use, with little or no efforts.\\nThe announcement was tweeted by Yan Zhu, who has reportedly been hired to assist in the project. Yan Zhu formerly worked as an engineer at the Electronic Frontier Foundation (EFF), a non-profit organization that has consistently been outspoken in its call for the widespread use of encryption across the Web and the Internet, and he is apparently no friend of the NSA.\\nBut as said earlier, use of encryption will require some amount of education for users also, to make sure their privacy expectations are set appropriately. In an interview with the Wall Street Journal, Stamos explained that PGP encryption won\\'t cloak the destination of your e-mail.\\n\"We have to make it clear to people it is not [a] secret you\\'re emailing your priest, but the content of what you\\'re e-mailing him is secret,\" Stamos said.\\nThe move to encrypted mail will bring Yahoo! in the list of the most secure technology companies in mail services among web giants, Google and Microsoft that protect their customers in the post-Snowden era of security. AntiRSI.xcodeproj 674 2 years Nicholas Riley Upgrade for vaguely modern Xcode (7.2.1).\\nEnglish.lproj 677 2 years Nicholas Riley MainMenu?.nib: Update for current-ish Xcode.\\nAntiRSI.h 3.9 KB \\u200b 371 11 years Nicholas Riley AntiRSI.h: Updated for 1.4njr4; forgot a place last time.\\nAntiRSI.m 25.7 KB \\u200b 675 2 years Nicholas Riley AntiRSI.m: Fix format string issue and compilation on >10.4.\\nAntiRSIView.m 2.4 KB \\u200b 346 11 years Nicholas Riley Updated for 1.4njr3. Fixed whitespace for consistent 8-space tabs. Proud to be Local\\nMCWknowledge /\\nAnna Bauman of Wausau, Wisconsin, was a UW-Marathon County sophomore in 2014 when she first learned about an innovative new campus that the Medical College of Wisconsin was establishing in her hometown. In December 2014, she attended a talk by MCW-Central Wisconsin Dean Lisa Grill Dodson, MD, and hearing about the local accelerated medical school program immediately piqued her interest. In the four years since she first learned of the program, Anna transferred to UW-Madison to complete her pre-med undergraduate studies, applied to MCW-Central Wisconsin and was accepted as a member of this year\\'s incoming class.\\n\"I have been interested in a career in medicine ever since high school and am particularly interested in working in primary care and community medicine in more rural areas,\" she says. \"When I first learned the opportunity to attend medical school in my own hometown was becoming available, I knew right away I wanted to be involved.\"\\nAnna has deep ties with the Wausau community. She grew up volunteering at the county jail and her church, and she was a bell ringer for the Salvation Army each year around the holidays. Throughout her high school years, she tutored her peers, worked in the greenhouse and as a lifeguard at the community pools, and played violin at the hospice house.\\n\"I have seen a lot of different aspects of Wausau,\" Anna says. \"There\\'s so much going on here for a town of 40,000 people. It\\'s a very engaging place to live.\"\\nAnna first became interested in medicine when she shadowed physicians in clinics in Wausau for a high school class. She also completed a family medicine clinical internship in a local clinic, which she says influenced her decision to become a community physician.\\n\"I became interested in the field because I saw how collaborative, dynamic and challenging it was to practice community medicine,\" Anna says. \"I liked how connected those doctors were to their community and how they knew how to meet local needs. I knew right away that community medicine appealed to me.\"\\nAfter attending Dr. Dodson\\'s talk in 2014, Anna joined a pipeline committee for the campus as a student representative to encourage high school and college students in central Wisconsin to explore careers in medicine. Each month, she met with Dr. Dodson, local physicians and advisors and staff from local colleges to help promote student engagement and awareness for the new program.\\n\"The pipeline committee provided resources and information about practicing medicine that students in central Wisconsin otherwise might not have found,\" Anna says. \"I wanted to be a strong asset for faculty and staff at MCW and a good liaison to local students.\"\\nAnna says the connection between her interests in the medical field and her strong ties to her local community was the reason she was invested in letting other students know about the new campus.\\n\"There is a problem in central Wisconsin with retaining medical students who will want to stay here and practice as primary care physicians,\" she says. \"From my point of view, I\\'m hopeful having a medical school in central Wisconsin will develop physicians who are deeply invested in this community and want to stay. I grew up here and am familiar with this area, which makes practicing patient care here that much more personal. MCW was my top choice for medical school, and I became a member of the pipeline committee because I wanted others to know about this opportunity as well.\"\\nMCW-Central Wisconsin is one of two regional campuses MCW created as a solution to Wisconsin\\'s physician shortage, which studies indicate severely limit patient access to quality care in more rural areas of the state. One report by the Wisconsin Hospital Association estimated that by 2030, Wisconsin could experience an estimated shortfall of 2,000 physicians. MCW expects to lower the cost of medical education and increase the number of medical students who stay to practice in rural areas through their campuses in both Wausau and Green Bay and the establishment of new residency programs. Ultimately, leaders across MCW\\'s three campuses hope educating students across the state will result in a physician workforce with a deep understanding of local health care needs and better patient outcomes. Anna says she has already seen firsthand the impact MCW-Central Wisconsin has had on the central Wisconsin community.\\n\"The campus is great for students, but it is also a great thing for this community. I have seen how receptive people in Wausau are to MCW,\" she notes. \"People love that we have this great institution here now, and we\\'re proud our community can support this. I think this speaks volumes about how much the surrounding community cares about health care.\"\\nAnna also says having local medical students attending medical school in their hometown will provide current high school and college students with role models to follow.\\n\"I know students in the first class from the Central Wisconsin campus, and seeing someone who is similar to me who grew up here and is attending medical school here made me feel like I could do this too,\" Anna says. \"I have two younger sisters who might be interested in medicine someday, and having local role models through this program makes a big difference.\"\\nAnna is looking forward to learning from local physicians and role models herself, and that the opportunity to practice and learn under physicians at MCW-Central Wisconsin is part of what drew her to the program.\\n\"My class has a total of 23 students, so it\\'s relatively small for an incoming medical class,\" she notes. \"I am looking forward to a lot of one-on-one training with physicians during my rotations. It\\'s great that I will be able to learn in an environment I can envision myself working in someday. I will be able to see myself in their shoes someday, practicing and having a family in the area.\"\\nAnna hopes to be engaged in community health outside the walls of her practice. She plans to become involved in public health efforts in central Wisconsin and has particular interest in women\\'s health and preventative care.\\n\"Ultimately, being an active member of the community and having a deep understanding of the people who live here will help my practice,\" Anna concludes. \"Wausau is a place that provides resources people need to feel welcome, healthy and like contributing members of the community. MCW-Central Wisconsin values the same things I personally value, and it\\'s a dream come true to be able to attend medical school here.\\nTagged: Community Engagement/Community Partnership Central Wisconsin Campus Medical Education\\nCommunity Front Door\\nReimagining Care: Paul Bergl, MD\\nIn the wake of the global pandemic, MCW faculty, staff and students are reimagining how they provide care and services.\\nNa\\'il\\'s Story\\nA young man who searched for a way to serve his community finds his calling.\\nMedical Student Sees Health Equity as Part of Her Identity\\nStephanie Baguidy\\'s passion for helping others was validated when she earned a prestigious cancer studies grant. Плехотиці ()\\xa0— село в окрузі Требішов Кошицького краю Словаччини. Площа села 12,94 км². Станом на 31 грудня 2016 року в селі проживало 784 жителі.\\n\\nПротікає Мочярний потік.\\n\\nІсторія \\nПерші згадки про село датуються 1332 роком.\\n\\nПримітки \\n\\nСела округу Требишів\\n1332 у Європі Lea really does talk a lot.\\nI thought you said you didn\\'t know Jackye.\\nIt\\'s Tanya\\'s turn to wash the dishes.\\nAlfred kicked the door in.\\nDo you think Marvin would be able to pick Arlene up at the airport?\\nSanford and Bill have forgiven me.\\nI hope Kris has a good time.\\nDon\\'t make a fuss over Samir.\\nJayesh died fighting for what he believed in.\\nTim was unkind to Bobbie.\\nLloyd is our prime suspect.\\nRich dug a hole in his front yard.\\nRay never thought that Hilda would commit suicide.\\nThe next-door neighbor looked out the window when Leon yelled.\\nAlexander didn\\'t have enough experience to know what to do.\\nSusanne did his schoolwork at the kitchen table.\\nJoe wanted to write Dimitry a song for her birthday.\\nDid Jeannette tell King what she should do?\\nKinch and Lea have been friends since they were kids.\\nPresley pointed to the sign.\\nTommy is a bit strapped for money.\\nLinley never forgets to call his mother on her birthday.\\nMerton owns a blue car.\\nFloyd wants to buy an apartment in Boston.\\nJuergen doesn\\'t have to prove anything to me.\\nSabrina was jailed on trumped-up charges.\\nKonstantinos won\\'t let anything happen to you.\\nI figured Neville wouldn\\'t know the answer.\\nBertrand wants to meet Kelly again. Lillian was clearly feeling victimized by her husband Rob.\\nIt is always amazing to me when a person who is blaming their partner for blaming them does not realize that they both are trying to control each other – that they are both blaming!\\n\"But aren\\'t you blaming him for blaming you? Clarity about Your Incomes: Not sharing the income details may not only dampen the trust factor in a marriage, but also result in miscalculation of income and expenses, and thus, inadequate investments and savings. While having individual savings accounts is important, there is also need to create a joint account in which the couple can contribute and save accordingly.\\nInvest in Health Insurance: Securing health concerns must be the top most priority for newly married couples. This means that partners must share details about any pre-existing diseases they might have suffered in the past. Accordingly they can choose a health insurance. In addition, if they are planning to start a family in near future, they must focus on investing in a health insurance that covers pregnancy or has maternity insurance features. Since all insurance companies do not provide maternity coverage, it is important that couples read details shared in the proposal form before zeroing in on their choice of policy. It is important to note that most health insurers agree to pay for maternity expenses only two years of paying premiums for the health insurance plan. It is important that couples invest in health insurance with maternity coverage two years before planning to have a baby.\\nBuy Insurance for Long-Term Security: Marriage entails responsibility. Financial security is another big factor that affects choice of investments and quantum of savings. To ensure that your partner continues to enjoy the same kind of lifestyle throughout life, you may start investing in a term plan that would pass on the sum insured to your partner in case of your sudden demise. Alternatively, you may invest in various life insurance plans that would not only earn you returns after some years or pay the sum insured to your nominee, i.e., your partner.\\nInsurance to Meet Medical Expenses: Some couples may look for insurance only to meet hospitalisation expenses realising that they can afford to pay pre and post-hospitalisation charges. Such couples can choose to pay for mediclaim policies that would pay for the insured\\'s hospitalisation subject to the condition that he or she has remained admitted to hospital for more than 24 hours.\\nBe Clear About Your Financial Priorities: This is important without which you cannot set financial goals. The husband may want to start a business of his own after he turns 40 years, while the wife may more inclined to travel around the world and save money for the same. Keeping in mind both their financial goals, the couple must make investments that would not only secure their future, but fulfill their goals too. Though risky investments yield better returns than most others, it would be prudent to invest in less-risky investments giving handsome returns. This would not only help the couple earn good returns, but lend them a feeling of security too.\\nSummary: Individual financial goals are different from a couple\\'s financial goals. Therefore, decisions regarding investments and insurance must be made keeping their needs in mind. I wanna go to Gram and Pap\\'s for a swim! Then, you will take me to see Bubby so we can pick veggies and make salsa. Then, I need to go ride horses with Poppa Bish. Then, Aunt Lizzie is taking me to Baby Gap. Then, Aunt Jessie is taking me to lunch. Then, Uncle Austen needs to coach my rugby team. Got it? Dad… drive me to all these places now. Mom… you bring the bottles. Does everyone understand?\\nMarching orders have been assigned… Munchie has us all wrapped around his (tiny) little finger. A Blue Hill Resident on School Consolidation\\nPosted on October 9, 2009 by deviger\\nRobert Webster of Blue Hill posted this comment earlier today on a piece featuring a statement from Rep. Seth Berry on school consolidation. Mr. Webster has given his statement as to why the school consolidation law should be repealed. You can read Mr. Webster\\'s full statement after the cut.\\nThe consolidation law should be repealed. A \"yes\" vote on Question #3 will restore fairness to the organization of school systems in Maine. Mandated consolidation does not work for rural areas. People throughout Maine should recognize and honor the votes of over 200 communities that rejected consolidation. Large school systems will not meet the needs of eastern and northern Maine.\\nThe consolidation law has been inconsistently applied and sometimes unfairly interpreted and implemented by the Commissioner of Education.\\n• Maine laws since 1897 have always included a method for towns not well served by a school district or school union to withdraw. As interpreted by the Commissioner in 2007 and 2008 consolidation plans were not allowed to include withdrawal provisions in the proposed consolidation plans – even though the consolidation law was silent on this matter. Yet in 2009 the town of Allagash was allowed to include a withdrawal provision in its consolidation plan with Ft. Kent.\\n• Schools systems exempt from consolidation (those with 2,500 or more students and the off shore islands) were required to submit plans to the Dept. of Education on how savings would be found in administration, special education and transportation. Exempt schools filed these plans. NONE of the exempt schools were required to implement any of those savings plans.\\n• School systems with 1,200 up to 2,500 students were among the school systems required to create and vote on consolidation plans. School units of this size that voted down their plans were let off the \"penalty\" hook by the Commissioner. No penalties were imposed for these \"middle size\" districts. School systems with fewer than 1,200 students will suffer subsidy penalties in July of 2010.\\n• The Commissioner rejected consolidation plans that did not find savings. Consolidation planning committees were told to list savings even if there were none. The Blue Hill-Deer Isle area consolidation plan was rejected twice by DOE and only approved on a third attempt after \"savings\" were included for subsidy that would be lost due to the subsidy penalty built into the law. Some communities that voted to consolidate felt \"bullied\" into it.\\nA \"yes\" vote on Question #3 will restore our liberty and freedom. Maine citizens should be able to organize local schools in ways that make sense to us – without the threat of financial coercion from our own Dept. of Education. Repeal will re-establish the local authority of Maine towns and cities to organize local schools in the best interests of our own children. The consolidation law curtailed our freedom. Repeal will restore our freedom.\\nFiled under: Uncategorized | Tagged: Blue Hill, education, maine, Public Education, Question 3, School District Consolidation, Seth Berry, Yes On 3 |\\n« Women\\'s and Children\\'s Groups Support No on 1 Yes On 3 Statement from Skip Greenlaw » A Soft Bucket can do all kinds of things, like keep plants cosy, desks tidy and bread rolls warm. It\\'s a minor miracle! Please note: Soft Buckets are not waterproof, so we advise you to remove the plant from the Soft Bucket before watering, and to have a saucer under the pot. South Tyneside move sparks major expansion for Flame\\nA major North East retailer is sparking a major expansion after moving to a new head office in South Tyneside.\\nThursday, 28 February, 2019, 10:02\\nJohn Savage (left) and Stephen Hepburn\\nFlame Heating Group welcomed MP Stephen Hepburn to officially open its new Boldon head office.\\nThe MP for Jarrow visited Flame\\'s premises on Boldon Business Park to tour the facility and meet the staff who have moved there from the firm\\'s old premises.\\nFlame, the North East\\'s fastest-growing heating and plumbing merchant, invested in the new head office in November.\\nIt was previously operating from Team Valley, and the premises there will now act as the company\\'s lead retail outlet.\\nEstablished in 2011 with a single branch, Flame currently operates 11 trade counters across the region and in Scotland.\\nThe investment in Boldon aims to support the company\\'s three-year expansion plan.\\nThis includes the launch of additional trade counters across the North East and throughout the UK.\\nFlame also expects to double its current workforce of 60 employees, as part of the ambitious expansion strategy.\\nStephen Hepburn MP said: \"It was a pleasure to officially open Flame\\'s new head office in Boldon Business Park.\\n\"Small businesses are the backbone of our local communities.\\n\"I was impressed with their forward-thinking plans for the future.\\n\"It is always excellent to see thriving and expanding businesses invest in our area and this is good news for the Jarrow constituency, South Tyneside and the wider North East region.\"\\nJohn Savage, Managing Director of Flame Heating Group, said it had been a pleasure to welcome Stephen Hepburn to the new offices.\\nHe predicted the move to Boldon would be the start of big things for the firm.\\n\"It was great to welcome Mr Hepburn MP to our new offices to show him what it is we do and how we plan to grow the business further,\" he said.\\n\"We have big aspirations for Flame in the region and further afield as we continue to expand and create further job opportunities here in Boldon and across our branch network.\\n\"We look forward to welcoming Stephen back in the future.\\n\"I would like to thank him for visiting and marking the official launch of our new base.\" A trip down memory lane for the young at heart 10 Questions.\\nGreat quiz, should have skived off work more in the 70s.\\nGave it a 5. Is that \\'Paddington\\' Bond for The Herbs? If so, wow.\\nI loved the Clangers. Brought back memoires of watching tele with the kids !\\nHow well do you know your \"Friends\"? FIBER GRIP CROSS-LOCK TWEEZERS SET OF 3 SPECIAL SHAPES - 2-ROUNDS & 1-SQUARE FOR HOLDING ROUND CIRCULAR PARTS - SQUARE & RECTANGULAR DISCS Tweezers are the latest addition to the Cross-Locking Fiber Grip Tweezers line. Fiber Grip Tweezers are used by Jewelers, Model Makers, Hobbyists, in the Electronics field, by Watchmakers and for Craft and Glass work. Tweezers can be used by individually by themselves or can be attached to a Third Hand Base, very durable, made of Stainless Steel and has Heat Resistant Fiber Grips to protect fingers from heat build-up when using in soldering and welding operations. The LARGE ROUND shaped tips can be used to hold Spherical pieces: Round, Circular, Rods objects. The round open end tips are 3/4\" in diameter width and extend to an opening of 1-1/2\". The round tips are very useful for holding Circular parts around the majority of the diameter rather than at only minimal points of the object. Tips of the tweezers have serrations and be used to pinch and hold objects. The SMALL ROUND head has rounded open mouth, used to hold Round, Circular, Rods objects and pieces. The round open end tips are 11/32\" in diameter width and extend out 11/16\". The formed tips are very useful for holding round items and parts, the tips of the tweezers have serrations. The SQUARE Shape has a fork style head, with the holding tips have a wide open square mouth , used to hold large or wide parts and pieces. The open end tips are 7/8\" wide and extend out 1-3/32\", are very useful for those wider and square or rectangular pieces, the tips of the tweezers have serrations.\\nIf you have any questions about this product by Novel, contact us by completing and submitting the form below. If you are looking for a specif part number, please include it with your message. SNDTRCK: New Music Week of 2/23\\nMusic lovers agree that music has gotten them through good times and bad times. Just read the comments on the Instagram profile of any popular musician. We save our favorite songs into different playlists labeled for working out, studying, partying and even sleeping. Some types of music are perfect for breaking up, and others work better for making out\\nThe soundtrack of life is not just what\\'s \"now playing.\" It\\'s when the perfect song comes on at exactly the right moment. That\\'s why we\\'re going one deeper with the best new music of the week for the soundtrack of your life. Get ready to add five new songs to your personal rotation.\\nCalvin Harris – \"Pray to God\" ft. Haim\\nScottish producer Calvin Harris teams up with the American pop rock up band Haim in his newest single \"Pray to God\" featuring Haim. The song was released on Harris\\' album Motion and now they are playing it on the radio. In the music video, the Haim sisters sing amid a dark forest dressed in flowing black garb. They are accompanied by an assortment of woodland creatures, including wolves, a bear and a lion. But Harris does not appear, leaving us to wonder where he is exactly.\\nPerfect for: Sitting on the hood of your car, staring off into the distance and musing over your high school relationship the night after graduation.\\nDrake – \"Energy\"\\nThis week Drake unexpectedly dropped If You\\'re Reading This It\\'s Too Late. Billboard predicts that the follow up to Nothing Was the Same will easily debut at number one in next week\\'s charts. This will be the fourth number one for Drake, who was recently featured by the New York Times as the \"first true post-Kanye superstar.\" In \"Energy,\" one of three debut singles, Drake reflects upon people that want to drain him of his energy using the full effect of his trademark lilt.\\nPerfect for: When you need to find some way to cope with the haters. Even if your only haters are those mean customers at work.\\nFlosstradamus x TroyBoi – \"SOUNDCLASH\"\\nFlosstradamus is an EDM act, so they release something new every week to the delight of their hordes of loyal fans. For their latest single they collaborated with UK artist TroyBoi. Usually Chicago based production duo Flosstradamus claims Mad Decent, but \"SOUNDCLASH\" is out now on Ultra Music. The bouncy romp is another one for the ladies to twerk to at the local trap music party.\\nPerfect for: When you want to dance and talk, because it has a groove you can dance to with minimal vocals. You could play it during an early opening DJ set, or as bed music on your indie podcast.\\nKid Ink – \"Ride Out\" ft. YG, Wale, Tyga & Rich Homie Quan\\nWith appearances from Chris Brown, Trey Songz, Usher and R Kelly, Kid Ink\\'s Ride or Die LP debuted at #14 on the Billboard Top 200 this week. Then the Los Angeles rapper released a new music video for the lead single off the soundtrack to Furious 7, featuring a score of famous rappers. In the video Kid Ink, YG, Wale, Tyga and Rich Homie Quan each rap in front of their own car. This is spliced between scenes from the seventh installment of the Fast and the Furious film series.\\nPerfect for: Since street racing is highly illegal, this is clearly a road trip song. Try listening to it on the way to a really good concert that\\'s worth the trip to the next town over.\\nShaun Frank – \"Mind Made Up\"\\nFuture house producer Shaun Frank hails from Toronto Canada. His new single \"Mind Made Up\" is due out February 24 on Dim Mak Records. It follows a collaboration with Borgeous on Spinnin\\' Records called \"This Could Be Love\" featuring Delaney Jane. Frank has been officially spinning since 2013, and already has mad support from 3LAU, Nicky Romero, Oliver Heldens and Steve Aoki.\\nPerfect for: When you\\'re dancing around in front of the mirror and pre-gaming while you get ready to go to the rave.\\nAbout the author: Elizabeth de Moya has been published in DJ Mag, LA Weekly and Thump. She has a BA in Linguistics from UC Berkeley. Check out her underground EDM e-Zine at www.blackbettyblog.com and follow on Twitter @blackbettyblog.\\nSOL REPUBLIC February 24, 2015 March 13, 2015 calvin harris, drake, Elizabeth de Moya, flosstradamus, haim, kid ink, new music, rich homie quan, shaun frank, sndtrck, soundtrack, troyboi, tyga, wale, yg\\nPrevious Previous post: Get Local: Noise Pop 2015 Week in San Francisco\\nNext Next post: Inspiration Playlist: Con Brio Q: Calculating line integral of $y\\\\,dx+z\\\\,dy+x\\\\,dz$ Calculate the integral $$\\\\int_{\\\\gamma} y\\\\,dx+z\\\\,dy+x\\\\,dz $$ when $$\\\\gamma=\\\\{(x,y,z):x^2+y^2+z^2=a^2, x+y+z=0\\\\}$$\\nI tried to isolate $z$ and to replace it in the sphere but I stuck in the parametric track.\\nthank you! \\n\\nA: This exercise is best to be tackled using Stokes\\' theorem: $$\\\\mathcal{F}=\\\\oint_\\\\gamma ydx+zdy+xdz=\\\\oint_\\\\gamma \\\\left\\\\cdot d\\\\vec{r}=\\\\iint_S \\\\nabla\\\\times\\\\left\\\\cdot\\\\vec{n}ds,$$ where $\\\\gamma$ is the boundary of $S$ and $\\\\vec{n}=\\\\vec{n}(x,y,z)$ is the unit normal field oriented so that while traversing the countour $\\\\gamma$ the surface $S$ remains on the left side.\\nSince we have some freedom in choosing $S$, let\\'s take $S$ to be the circle whose boundary is $\\\\gamma$. In this case, $\\\\vec{n}=\\\\pm\\\\frac{1}{\\\\sqrt{3}}\\\\left<1,1,1\\\\right>$. We notice that $\\\\nabla\\\\times\\\\left=-\\\\left<1,1,1\\\\right>$ and $\\\\nabla\\\\times\\\\left\\\\cdot\\\\vec{n}=\\\\pm\\\\sqrt{3}$ then $$\\\\mathcal{F}=\\\\pm\\\\frac{1}{\\\\sqrt{3}}\\\\iint_SdS=\\\\pm\\\\frac{1}{\\\\sqrt{3}}A(S)=\\\\pm\\\\frac{\\\\pi a^2}{\\\\sqrt{3}}.$$\\nNotes: the direction of the contour $\\\\gamma$ was not specified. It will affect the sign of the the integral, hence we have $\\\\pm$ in the final answer. $A(S)=\\\\pi a^2$ denotes the area of the circle that lies in the intersection of the sphere and the plane. Since the plane passes through the center of the sphere, we know that its radius is $a$.\\nThis is the most straightforward solution, however if you insist on parametrization we can be more adventurous. Our goal in the this case is to parametrize the curve $\\\\gamma:$ $$\\\\left\\\\{\\\\begin{array}{ccr}x+y+z&=&0\\\\\\\\x^2+y^2+z^2&=&a^2\\\\\\\\\\\\end{array}\\\\right.$$ Let\\'s take a look at the first equation: $0=x+y+z=\\\\left(x+\\\\frac{z}{2}\\\\right)+\\\\left(y+\\\\frac{z}{2}\\\\right)=u+v$, where $u$ and $v$ are the expressions in the princesses. The first equation transforms into $u+v=0$ (much better). For the equation of the sphere we will get $$a^2=x^2+y^2+z^2=\\\\left(u-\\\\frac{z}{2}\\\\right)^2+\\\\left(v-\\\\frac{z}{2}\\\\right)^2+z^2=u^2+v^2-z(u+v)+\\\\frac{3}{2}z^2$$ We remember that $u+v=0$ and our system is reduced to: $$\\\\left\\\\{\\\\begin{array}{ccr}u+v&=&0\\\\\\\\2u^2+\\\\frac{3}{2}z^2&=&a^2\\\\\\\\\\\\end{array}\\\\right.,\\\\hskip{30pt} \\\\left\\\\{\\\\begin{array}{ccr}u+v&=&0\\\\\\\\\\\\frac{u^2}{a^2/2}+\\\\frac{z^2}{2/3a^2}&=&1\\\\\\\\\\\\end{array}\\\\right. $$\\nNow we apply the standard parameter for an ellipse $$\\\\begin{array}{rcl}u&=&\\\\frac{a}{\\\\sqrt{2}}\\\\cos t\\\\\\\\z&=&\\\\sqrt{\\\\frac{2}{3}}a\\\\sin t\\\\\\\\v&=&-u\\\\\\\\\\\\end{array}$$ We should not forget to bring these equation to the original system of coordinates $$\\\\begin{array}{rcl}x(t)&=&u-\\\\frac{1}{2}z=\\\\frac{a}{\\\\sqrt{2}}\\\\cos t-\\\\frac{a}{\\\\sqrt{6}}\\\\sin t, \\\\\\\\y(t)&=&v-\\\\frac{1}{2}z=-\\\\frac{a}{\\\\sqrt{2}}\\\\cos t-\\\\frac{a}{\\\\sqrt{6}}\\\\sin t, \\\\\\\\z(t)&=&\\\\frac{2a}{\\\\sqrt{6}}\\\\sin t,\\\\end{array}$$ where $0\\\\le t \\\\le2\\\\pi$. For sake of completeness let us compute the form $ydx+zdy+xdz$ in terms of the parameter $t$. We keep thorough track of the terms $\\\\sin^2t$ and $\\\\cos^2t$ and we don\\'t care much about the terms of the form $\\\\sin t\\\\cos t$ since the integration of the mixed terms over $[0,2\\\\pi]$ will result in $0$: $$ydx+zdy+xdz=\\\\left[C\\\\sin t\\\\cos t-\\\\frac{a^2}{\\\\sqrt{12}}+\\\\frac{2a^2}{\\\\sqrt{12}}\\\\right]dt=\\\\frac{C}{2}\\\\sin2tdt+\\\\frac{a^2}{2\\\\sqrt{3}}dt,$$ where $C$ is an irrelevant constant. After integrating from $0$ to $2\\\\pi$ the first term disappears due to the periodicity and we arrive to $$\\\\mathcal{F}=\\\\frac{a^2}{2\\\\sqrt{3}}\\\\cdot 2\\\\pi=\\\\frac{\\\\pi a^2}{\\\\sqrt{3}},$$ which confirms our earlier computation.\\nHere again the contour direction was not specified. The change of direction will result in the integration from $2\\\\pi$ to $0$ which will reverse the sign of the integral if necessary.\\n Call it the Washout in Windsor.\\nIf the National Basketball League of Canada had a higher profile, Thursday\\'s washout would be right up there with the 1987 Punchup in Piestany or the 1976 walkoff when the Moscow Red Army left the ice against the Philadelphia Flyers.\\nIn no way can the NBL flatter itself that it\\'s that important.\\nIt will have to settle for being remembered as the league that opted to die by suicide in a very public manner.\\nThursday was supposed to be Game 7 in the NBL final between the defending champion Windsor Express and Halifax Rainmen. Instead it turned into yet another black eye for a league that saw the Rainmen leave the WFCU Centre because they feared for their safety.\\n\"Due to a physical altercation between the Halifax Rainmen and the Windsor Express the game has been cancelled citing safety concerns for its players and coaches,\" Rainmen owner Andre Levingston said. \"When the game is not safe for players to compete there is a problem. We have to do a better job of governing our league and putting principles in place where there are strict consequences.\\nIt began when the Rainmen arrived for a morning shootaround at what they thought was an empty WFCU Centre.\\nReports indicate that the Express were in the building but that their scheduled shootaround time had not yet arrived.\\nThere was a physical confrontation between Express coach Bill Jones and Rainmen forward Liam McMorrow when McMorrow wouldn\\'t give Jones a basketball.\\nBoth teams then got into it and threats were allegedly made.\\nNo doubt the fight could have been avoided by giving the misbehaving individuals a timeout in the corner and making them miss recess.\\nInstead, Vito Frijia owner of the London Lightning and a member of the league executive committee left from London to see if he could straighten out the issue. Also in Windsor was Brampton A\\'s coach David Magley.\\nAs Frijia was heading to Windsor, he managed to stop the Rainmen bus that was heading to the airport on the highway in the other direction.\\n\"I made them pull over and I talked to them about an hour trying to sort things out but they were worried about their safety,\" said Frijia who when he initially heard about the fight extra security earlier in the day.\\nFrijia said early in the evening that the game was not forfeited.\\n\"We are going to have a conference call (Saturday) morning and see what\\'s going to happen,\" he said.\\nHe said Magley would be one of the key figures investigating the situation.\\nYet several hours later there were reports that the game was forfeited and Windsor were league champs.\\nIt all makes the league an even bigger joke.\\nFrijia said that the biggest issue is that many of the players, especially on the Rainmen team, already have contracts to begin play in other leagues next week.\\nIt\\'s a nightmare for Frijia and the NBL. This is a league that among other things announced a television contract that didn\\'t exist and that has had three commissioners in four years. The last commissioner Paul Riley announced he was leaving the position on twitter only to have the league try to one-up him an hour later by saying he was fired.\\nThe idea that a Game 7 to decide a championship wasn\\'t played because of safety concerns stemming from a punch-up in a morning shootaround will no doubt add to the belief that the NBL is the Wild West with the only thing missing the shootout at the OK Corral.\\nGive it time though. If the league continues to operate without independent supervision, the OK Corral will seem like a spitball fight compared to what might happen.\\nThe reality is that not even a stick of dynamite shoved in some of these owners\\' nether regions enough of a wake up call to turn them into professionals.\\nWith Thursday\\'s circus, they\\'ve truly earned the moniker National Bush League of Canada. COUSIN-Special multi-level ends easily create perfect wire loops and jump rings! Features soft comfort handles and creative tips on back! Warning: Keep out of reach of children. Not a toy or for use by children. SAN FRANCISCO, February 15, 2013 – David Lazerwitz, environmental partner and co-chair of Farella Braun + Martel\\'s Renewable Energy and Clean Technologies Group, was named to the inaugural LMG Clean Technology & Renewable Energy guide\\'s CleanTech 100. The list recognizes the top 100 clean technology and renewable energy attorneys practicing in the industry today.\\nLazerwitz was commended by peers for \"doing outstanding work in the renewable energy space with his group.\" He represented First Solar in connection with the federal, state and local permitting and regulatory approvals for the 550-MW Desert Sunlight Solar Farm and the 140-MW Campo Verde Solar Project, and currently represents First Solar, NextEra Energy Resources and Calpine Corporation in connection with several existing and development stage renewable energy projects in California and Nevada.\\nThe guide listed Farella Braun + Martel as a \"recommended\" firm in the Regulatory practice area. Farella\\'s abilities within the sector were noted as being \"outstanding when it comes to developing clean technology projects.\" Farella is noted for handling extensive clean technology and renewable energy work concerning land use and environmental compliance issues and corporate transactions.\\nResearch included interviews and surveys completed by partners active in the market. Firms were selected as a result of extremely positive feedback received from interviews with peers and clients and were viewed as leading actors in a particular practice area.\\nFarella Braun + Martel represents clients throughout the United States and abroad in sophisticated business transactions and high-stakes commercial, civil and criminal litigation. Founded in 1962, the firm is headquartered in San Francisco and maintains an office in the Napa Valley focused on the wine industry. Farella Braun + Martel lawyers are known for their imaginative legal solutions, dynamism and intellectual creativity. With an unwavering service ethic and interdisciplinary team approach, the firm is committed to advancing clients\\' objectives in the most effective, coordinated and efficient manner. The Bamboo Running Boards are a must add accessory. They match the Bamboo deck and provide more comfort for your passengers or better support for cargo.\\nNote: Only compatible with the Boda Boda Cargo Bike. / Beach House\\n/ Lilo & Stitch: 2-Disc Big Wave Edition\\nLilo & Stitch: 2-Disc Big Wave Edition\\nSomething for the kids and Hawaii lovers while relaxing at the beach house, Lilo & Stitch: 2-Disc Big Wave Edition. For those who might not be familiar with this DVD, this animated film\\'s story revolves around two eccentric and mischievous individuals: a young Hawaiian girl named Lilo Pelekai, who is raised by her older sister Nani after their parents died in a car accident, and a blue extraterrestrial animal-like creature named Experiment 626 (aka Stitch).\\nSet in Kauai (aka the Garden Isle), Nani decides to let Lilo adopt a dog and this is where Lilo is introduced to Experiment 626 / Stitch where he is pretending to be a dog. Stitch, who is genetically engineered by his scientist creator to cause chaos and destruction, initially uses Lilo to avoid being captured by an intergalactic federation, but Lilo and Stitch develop a close bond through the Hawaiian concept of ʻohana, or extended family, and for much of the movie the hijinx ensue as Stitch tries to avoid being captured.\\nThis bond with Lilo causes Stitch to reconsider, and eventually defy, his intended destructive purpose in order to keep his extended family together so yes, it\\'s a happily ever after beach themed movie, but a highly entertaining one that parents can enjoy with their kids at the beach. Is the bonus 2-disc Big Wave edition.\\nWidth: 9.00 (in)\\nHeight: 6.00 (in)\\nSKU: AM-L&S:2DBWE\\nWarranty: You can return any new, unopened item(s) within forty five (45) days from the day it was ordered, that counts as day one (1) and you have until day forty five (45) to postmark your return, for a full refund without question. For items that have been opened, tested, tried on, etc., we will honor the forty five (45) return day period as long as there is no noticeable wear and tear on the item(s) returned. While the outbound shipping costs are not refundable, we will pay the return shipping costs as determined by BeachNecessities.com. There is no handling fee of $4.95 if the total return weighs < eight (8) oz.\\nWave Coaster\\nGhost Wave BMW engines are set to be used in the new 4x4 workhorse, currently called Projekt Grenadier, that Ineos boss Jim Ratcliffe wants to put into production. He talks about its development here.\\nGrenadier – has moved a step closer with news that it will be powered by BMW engines.\\nBoth petrol and diesel units will be provided by the German marque and the Grenadier is due to go on sale in mid-2021.\\nPrecise details of which engines from BMW will be used have yet to be confirmed, but it\\'s likely the Grenadier will use the 252bhp 2.0-litre turbo petrol and 261bhp 3.0-litre turbo diesel from the X5 range.\\nHowever, the team behind the Ineos-backed car say it is not a collection of other companies\\' parts but a coherent model that BMW has accounted for in its development programme. This means the Grenadier will use the latest BMW powerplants rather than previous generation motors.\\nThe Projekt Grenadier will not come with an electric option for the foreseeable future as Ratcliffe believes it adds too much weight and complexity for what he wants to achieve.\\nThe Grenadier aims to be a replacement for the Land Rover Defender that went out of production at the end of 2015. Ratcliffe says this has left a gap in the market for a truly utilitarian 4x4 that is not an SUV.\\nHe says he wants to put the \"utility back into 4x4s\" and the new car will be narrower than most rivals such as the Toyota Hilux and Jeep Wrangler. He added the Grenadier will have its wheels as close to the corners of the vehicle as possible for the best off-road ability.\\nWhile the Grenadier has moved away from the first idea as that looked like an older Land Rover, the simple approach to design has remained at the core of the car.\\nIt will feature flat glass that\\'s cheaper to make and replace if it\\'s broken, as well as a pared-back interior with rubber mats and seats that can be hosed clean.\\nRatcliffe added: \"It might sound arrogant to think we can fill the gap left by the Defender, but we have the confidence.\\nIneos Automotive believes it can sell up to 30,000 Grenadiers each year, with many being used in places such as Africa and Australia.\\nThe company is currently looking for a factory site in the UK where it can assemble the Grenadier using its own chassis with aluminium bodywork offered in a variety of styles to suit the needs of different users. Ratcliffe expects the Grenadier to cost from £30,000 when it goes on sale. August 14, 1972-- Bridgeview Disaster Narrowly Averted\\nChicago Tribune photo\\nAugust 14, 1972 – During the evening rush hour, the temperature in the Chicago area drops quickly from 94 degrees to 71 as winds from the west at over 60 miles-per-hour kick up. As the dark storm clouds move quickly toward the city, 800 people in Bridgeview are gathered in a circus tent, watching the elephant act of the Rudi Brothers Circus. Fortunately, officials at the site spot the storm moving toward them, and order the tent cleared before winds topple four 50-foot poles onto the empty bleachers, covering the area with torn and twisted canvas. Bernard Mendelson, one of the managers of the circus, says, \"When you\\'ve been around a circus as long as I have, you develop a sixth sense about these things. I told [my partner] Rudy, \\'Get those people out now, right now.\\'\" [Chicago Tribune, August 15, 1972] The ringmaster, Charles Cox, is alerted and announces, \"Ladies and gentlemen there\\'s a little wind blowing up. Would you please leave the tent by the front entrance because the elephants will be going out the other way. Please walk, don\\'t run.\" As people file out, the musicians continue to play as the tent begins to shudder in the wind. Circus performers spend most of the night, clearing the debris so that the circus, sponsored by the Confederation of Police as a fund-raiser for drug abuse information programs and a legal defense fund for its members, can go on the following day in an improvised setting.\\nAugust 14, 1960 – The Chicago Daily Tribune reports that a building at 739 North State Street has been raised, and the rubble is made up of the remains of the flower shop that Dion O\\'Banion ran, a place \"where murders, boot-legging, and hi-jackings were planned amidst flowering plants and the scent of roses.\" [Chicago Daily Tribune, August 14, 1960] Ironically, at the time \"the same building that once served as the headquarters of a bloody band of killers during the guzzling decade of the twentieth century\" was most recently used as a meeting place for the Young People\\'s club of Holy Name Cathedral. In April of 2017 it was disclosed that JDL Development had agreed to pay $110 million to the Archdiocese of Chicago for the 90,000 square-foot property three blocks west of North Michigan Avenue. On January 18, 2018 the Chicago Plan Commission approved a project to build two towers on the site, the taller of which will be the eighth Chicago \"supertall\" building at 1,011 feet. The killing of Dion O\\'Banion in the shop in 1924 touched off a gang war that lasted for five years, pitting the North Side gang of O\\'Banion against Al Capone\\'s gang from the South Side. The black and white photo shows the flower shop. The second photo shows the future of the site -- it will hold the sixth tallest building in the city, One Chicago Square.\\nAugust 14, 1936 –Nathan Goldblatt signs a contract for the purchase of the residence built by Benjamin Marshall in Wilmette on Sheridan Road opposite the Baha\\'i Temple. It is reported that Marshall, the architect who designed the Drake Hotel, the South Shore Country Club and the Blackstone Theater and a host of other impressive buildings, had reportedly spent over a million dollars on the home and its furnishings. The Spanish-influenced home commanded a view of Lake Michigan … the Sheridan Shores Yacht Club used the home\\'s basement as its clubhouse. Marshall\\'s work studio had a space for 45 draftsmen. The home had a 50-foot-high, 75-by-100-foot tropical garden with palm and banana trees. The home\\'s swimming pool was lined with turquoise tiles from Algiers. Goldblatt reportedly paid $60,000 for the home but did not stay there long, and in 1950 Wilmette had the home razed. Only the wrought-iron gates remain on the property, which is today owned by the Baha\\'i Temple.\\nAugust 14, 1933 – Joseph Hastings, a Chicago policeman married for only four months, is shot to death during a gun battle with two thieves who rob a city office on Navy Pier. He is the eleventh policeman to die in the line of duty during 1933. The money that is stolen was intended for men on emergency relief who were employed by the city to do work at the pier. Thomas B. Rawls, an official of the West Englewood Currency exchange, used it to cash checks from the workers at a fee of 15 cents a check. It is unclear why a representative of a private enterprise is cashing checks in an office of the city street department. Hastings, hearing a shot fired, runs into a second floor office at the west end of the pier. One of the dozen clerks in the office, Charles Eddy, outlines the ensuing events, \"Hastings came in the door with his revolver drawn . . . The man at the side wall opened fire. The policeman fell to the floor and fired two shots in return. The robbers ran to the door. Hastings got up, and one of the robbers turned and shot him as he rose. The robber then grabbed Hastings\\' gun and ran out. . .\" [Chicago Daily Tribune, August 13, 1933] Morris Cohen a barber, is captured 30 minutes later at 1331 North Clark Street. His two companions remain on the lam. The above photo depicts Navy Pier as it appeared in 1933.\\nPosted by Chicago Old and New at 12:30 AM\\nLabels: 1972, Chicago Event, Weather Events\\nAugust 31, 1902 -- Lake Michigan Melee\\nAugust 30, 1937 -- Lake Shore Drive in Lincoln Par...\\nAugust 29, 2013 -- Wolf Point West Gets Go-Ahead f...\\nAugust 28, 1929 -- Graf Zeppelin Gives Chicago a Show\\nAugust 27, 1939 -- Peoples Gas Building Loses Its ...\\nAugust 26, 1920 -- Children\\'s Memorial Hospital Be...\\nAugust 25, 1900 -- Coliseum Dedicated\\nAugust 24, 1966 -- John Hancock Center Stops Work\\nAugust 23, 1985 -- Navy Pier\\'s Slow Disintegration...\\nAugust 22, 1982 -- Wabash Avenue Strip Joint Busted\\nAugust 21, 1982 -- East Delaware Place Hotel Conve...\\nAugust 20, 1990 -- Standard Oil Sheds Its Carrara ...\\nAugust 19, 1926 -- Chicago River Bridges Slammed b...\\nAugust 18, 1904 -- Lake Bluff Protests Navy Propos...\\nAugust 17, 1978 -- Michigan Avenue German Consulat...\\nAugust 16, 1978 -- Loop Elevated Should Go ... Say...\\nAugust 15, 1911-- Grant Park Aero Meet Sees Two Av...\\nAugust 14, 1972-- Bridgeview Disaster Narrowly Ave...\\nAugust 13, 1946 -- Chicago Park District President...\\nAugust 12, 1942 -- Blackout in Chicago As City Hol...\\nAugust 11, 1900 -- Diversey Parkway Bridge Complete...\\nAugust 10, 1945 -- La Salle Street Tunnel Closed\\nAugust 9, 1972 -- Columbus Drive Bridge to Make Tr...\\nAugust 8, 1981 -- Rush Street Round-Up Sees 153 Ar...\\nAugust 7, 1978 -- Illinois Center\\'s First Resident...\\nAugust 6, 1911 -- La Salle Street Tunnel Creating ...\\nAugust 5, 1966 -- Cr. King Felled by Rock in Chica...\\nAugust 4, 1902 -- Subway Needed in Chicago\\nAugust 3, 1978 -- State of Illinois Office Tower t...\\nAugust 2, 1978 -- Michigan Avenue Bridge Honored a...\\nAugust 1, 2001 -- Trump Is a Gucci Carpetbagger Sa... Video: Condemnation and Eminent Domain - What Is It?\\nVideo: What Can a Landowner Do When Facing Condemnation of His Property?\\nOur experience and willingness to forcefully litigate condemnation cases through trial has given us the advantage of better settlements where possible.\\nGovernment at every level have the power of eminent domain; the unilateral taking of private property for the benefit of the public. Under the pretense of having appraised the value of the property, however, the process is heavily weighted in favor of the government and against the landowner. When the process starts, the landowner loses title immediately and is forced to fight an uphill battle to try either to prevent the taking or to exact fair compensation for his property or his business.\\nOur lawyers have decades of experience in contesting condemnation actions by all level of government agencies of Georgia. Whether at the state, county, city, or utility level, we are skilled in contesting the valuations presented by the government. Our lawyers have developed some of the key decisions in the area of eminent domain in Georgia. They have represented the interest of both the landowner and commercial tenants. For landowners, they have protected the interests by forcing the government to clearly state the extent of the interest being taken, which has often resulted in increased awards at trial. For commercial tenants, they have developed strategies for identifying and proving damages and losses suffered by businesses in property affected by condemnation.\\nOur experience and willingness to forcefully litigate condemnation cases through trial has given us the advantage of better settlements where possible. Absent pre-trial resolution, our lawyers will skillfully maneuver the defenses and arguments presented by the government and its appraisers to bring the landowner or the tenant the best possible outcome.\\nOur lawyers have presented seminars to attorneys on eminent domain procedures and current events in the area of practice for over 28 years.\\nChallenged the description of an easement for the removal of \"danger trees\" in a condemnation petition, resulting in a later date of taking of the property and therefore a higher property value.\\nChallenged the description of a \"temporary work easement\" in a case where a commercial building had to be removed because of the project, resulting in the condemning authority\\'s payment of additional funds for square footage contained in the easement, a new date of taking and therefore a higher value on the whole parcel.\\nSuccessfully tried a business loss claim of over $2,000,000 before a jury on behalf of a commercial tenant against the Department of Transportation\\'s argument that the business was worthless, resulting in a 100% recovery of the tenant\\'s losses.\\nContested the DOT\\'s argument that property presently being used as residential could not be valued as commercial property, resulting in a valuation of over 250% more than what was presented by the government.\\nRepresented a commercial landowner of a corner property on a heavily traveled state road against two separate takings, the first by the county and the second by the DOT, showing that the county was aware of the planned subsequent talking by the DOT and that the county\\'s taking would eliminate access from the most visible and valuable part of the property.\\nLitigated the loss of a tract of property with an ongoing business on it to a settlement representing all of the landowner\\'s appraisal and 90% of the interest that would have been recovered at trial if the jury result had been to accept the landowner\\'s appraisal.\\nChallenged the taking of portions of an aging shopping center on behalf of a commercially successful business, forcing the recovery of a substantial settlement beneficial to the tenant.\\nNegotiated a change in the planned construction of a road, preserving a business owner\\'s access to the property by either a right or left turn in and out.\\nIncreased the award over the condemning authority\\'s testimony of value at the Special Master\\'s level of an office building in Midtown Atlanta and thereafter successfully negotiated a settlement for an additional $1.5 million and an advantageous lease in the property pending the commencement of construction and use by the condemnor. Join us every Saturday afternoon from 2 to 4 for a journey into rare and novel teas with Kevin, Fly Awake\\'s senior wizard. Not to be missed. Come and explore areas of tea nerdiness unknown to most and feared by some. Also, alter your states! Your virtual box seat to New England\\'s professional sports & live concerts.\\nDanny Amendola comes up big in Title Game for Patriots\\nQ: The third-and-18 situation – can you take us through that particular play? Also, can you walk us through your two touchdowns?\\nDA: The third-and-18 play, basically I think I had a little bit of an option route in the middle of the field and I saw that there was room. I had pointed out the line [to gain] before the play snap so I knew where to get to and Tom [Brady] had a laser and it was perfect. The two touchdowns: the first one, the go-ahead touchdown. It\\' s a play we\\'ve worked on – I scored on it a couple of times this year, I think, actually. I have a crosser in the back of the end zone and Tom reads the first whip route on the left to \\'Cookie\\' [Brandon Cooks] and then if he doesn\\'t have it then his eyes come to me in the back. We had it and it was a zone coverage. I obviously didn\\'t see what happened to Cookie on the first read and then Tommy had a great ball. I knew it was coming right by that \\'backer or safety in the back. It was a great throw.\\nQ: Your Patriots career was off to a relatively slow start. How does it feel to get to the point where you\\'re the No. 1 guy in the AFC Championship Game?\\nDA: I\\'m thankful for my opportunity here and what it\\'s been the last five years. I have a lot of great memories here. Any negative thing or anything that\\'s tried to hinder me, I try to ignore and focus on the positive things that have been going on in this building for the last five years for me. I\\'ve tried to build off that and be a good teammate and that\\'s the only thing I really focus on.\\nQ: It seemed like on your 20-yard punt return they kind of rushed the snap to get off a quick punt. Did that happen?\\nDA: I\\'m not sure. It was a quick snap. A lot of teams do that but I\\'m not sure what they were thinking. I believe we had a block on. We knew we were going to get pretty good field position. I think I was standing on the 40 or so and it was just about getting some yards.\\nQ: You had a lot of fair catches to that point…\\nDA: The punter was doing a great job all night of not out-kicking his coverage so to speak—kicking the ball high. I had my feet on the 10 a lot so I knew that he wasn\\'t going to kick it over my head and it was going to give him time to get down there. On that particular punt, I saw the rush. When you rush on a punt return, usually it holds the guys up even more. When they get out, they get scattered [and] they are not blocked. It just comes down to making a play when you get the ball in your hands, following a block or two or seeing any open space to get to. That was it.\\nQ: What did you notice from Tom Brady over the last week and everything that happened?\\nDA: Tommy\\'s the best. He\\'s the toughest guy I\\'ve ever met physically [and] mentally. If there is anything that happens to Tom, I know he can handle it. It was unfortunate to see him get injured mid-week. I know mentally it probably stressed him out a bit and physically I know it\\'s hard to throw a football with stitches in your thumb. Everybody knows how tough he is. Everybody knows that he\\'s our leader. It\\'s a testament to his career, his personality, the man he is. Not only is he the best player in our locker room but he gets everybody else to play well and step their game up and that\\'s why he\\'s the best.\\nQ: Do you feel any more internal pressure to step up when somebody like Rob Gronkowski comes out of the game?\\nDA: I don\\'t feel any added pressure, no. Every play I\\'m competing my tail off to try to win the route, win the block or whatever my job is on that play. Whoever is in the game, whoever is beside me, I have a lot of trust and faith in them whether it\\'s Gronk or Cookie or Hoagie [Chris Hogan]. Whoever it is, I know we have a lot of trust in this room.\\nQ: Can you talk about the Jaguars defense? They were playing so well, especially in the first half.\\nDA: Hats off to them. They played hard. We came out and we didn\\'t get many points on the board early. We made some adjustments at half. We wanted to come out and play faster, play more physical. We knew it was going to come down to the wire. They are a great team and they had a great season.\\nQ: When you heard that the double pass was called for you, did you get the sense it was \\'break open in case of emergency\\' or \\'all hands on deck\\'?\\nDA: We are trying to score. Whatever we\\'ve got to do. I don\\'t remember what happened on the flea-flicker. Who got the flea-flicker one? I don\\'t remember. [Phillip] Dorsett, that\\'s right. That\\'s a big play by Phil. Big play in the game, too. It worked out.\\nKevin Harriman\\nAFC, AFC Championship Game, Amendola, Football, Gronk, Patriots, pressure, Tom Brady\\nWritten by Kevin Harriman\\nI live a simple life, following a few beliefs that have served me well: 1) Boston sports are a religion for those of us in New England, despite the fact that the good Sisters of St. Joseph told me other wise from grades 1 through 12. My knuckles still hurt ! 2) Never tap out. Did the Americans give up when the Germans bombed Pearl Harbor ? 3)Life is too short to drink cheap booze ! WELCOME TO BOSTONSPORTSDESK.COM\\nView all posts by: Kevin Harriman\\nIt seems humble pie isn\\'t easy for Pats fans/media to swallow as a 20-year run comes to a seemingly screeching halt\\nPointing fingers at others has become the Patriots go to option when it comes to their pathetic offense\\nPatriots Soggy Success Over Dallas is a Huge Win; What it Means for New England\\nPatriots Young Receivers to be Tested Sunday with Injuries Mounting\\nJaroslav Halak comes up big in net for Bruins January 16, 2020\\nSean Kuraly meets the media following win over Penguins January 16, 2020\\nCassidy happy with his teams response in win vs Penguins January 16, 2020\\nIt is become painfully clear that the Bruins favorite color now is yellow January 15, 2020\\nChara not happy with the way B\\'s played in the second half of the game January 13, 2020\\nBoston Sports Desk - Your virtual box seat to New England\\'s professional sports. © 2020 | Privacy Policy Join trivia masters and casual quizzers alike for the Geeks Who Drink Quiz for a Cause, benefiting CURE!\\nThis Quiz for a Cause trivia night covers all topics from celebrity headlines to wordplay to bad television. Whether you\\'re a geek who loves science, pop culture, sports, or history, there\\'s a question for you.\\nWhen you join us for Quiz for a Cause, you\\'re automatically eligible to win gift cards to Cortland\\'s Garage. If each player on your team donates at least $5 to CURE during the event, you\\'ll also be eligible to win a cash prize of $5 per each team that donated!\\nThe maximum team size is 6 players. If you want to play but don\\'t have a team, come anyway. We\\'ll help you get recruited onto an existing team. As we mentioned last December, detached homes in the priciest parts of Greater Vancouver continue to hold their value despite predictions of a crash. Houses in Vancouver West (west of Ontario Street), the most expensive real estate zone in B.C., are 28 per cent above the levels of five years ago, while adjacent areas such as East Vancouver and Richmond are almost as strong.\\nApartment markets are weaker across the board, according to current figures from the Greater Vancouver and Fraser Valley real estate boards. In every market from Abbotsford to West Vancouver, detached homes have outperformed apartments over the past five years.\\nThe differences are often dramatic. Coquitlam has seen a 10 per cent increase in house prices over five years, and a 10.8 per cent decrease in apartment values; detached homes in South Surrey/White Rock are up 13.3 per cent in the same period, compared with a 16.8 per cent slide in apartment prices. Apartment prices on the east side of the City of Vancouver have risen slightly (3.5 per cent), but in this area house prices are up 23.6 per cent.\\nA modest general rally in apartment prices in February might be cause for hope for owners and sellers, but the fact is that markets have bounced around for years, generally in a downward direction.\\nLooking for the simplest explanations, it\\'s clear that apartment supply has grown substantially since 2008, especially at tower-dominated transit nodes such as Brentwood, downtown New Westminster and Coquitlam Central. And there is almost certainly less speculative money going into apartments: investor opportunities for windfall gains are less, the politics of strata management can be tiresome, and the leaky condo problem is still with us more than 25 years after it first emerged.\\nDespite the relative price weakness, developers continue to bring new supply on stream, presumably in expectation of a profit. There are apartment projects underway in most of the places we\\'ve visited in recent months — Metrotown, Austin Heights, White Rock, Burnaby Heights, uptown New West, and on and on. This makes sense, at least theoretically, in a world where older people are retiring and downsizing, and where younger people are looking for their first home purchase. The relative price stability of the apartment markets makes it possible to plan a down payment and the ensuing monthly payments with some confidence.\\nWriters on urban affairs assure us that many of today\\'s young people will be apartment dwellers for life, staying close to transit and walkable services rather than following their parents to the land of cul-de-sacs. Some even predict that the upper-end detached home in the middle and outer suburbs will become the real casualty in tomorrow\\'s real estate bubble. This trend may be taking hold already; it would be difficult to spot in price tables that report on large, diverse communities such as Coquitlam or Surrey. On 1 to 3 June 2018, EisnerAmper United States hosted its annual Partner Conference for 2018 in Virginia, U.S.\\nThe event was attended by 200 Partners and was a great opportunity for EisnerAmper Global colleagues from the United States, Ireland, Cayman and Singapore to connect over a weekend of activities.\\nDiarmaid O\\'Keeffe, EisnerAmper Ireland, Ray Kelly, EisnerAmper Ireland, Ben Leung, EisnerAmper Cayman and Alastair MacDonald, EisnerAmper Ireland at the EisnerAmper US Partner Conference in Virginia. Disease and Treatment\\nGhosts of My Lai, The\\nThe massacre of hundreds of civilians at My Lai was a turning point in the Vietnam War.\\nHMAS Sydney Memorial Service 2008\\nThe sinking of HMAS Sydney was the worst single loss ever suffered by the Australian navy, and the wreck of the ship was recently recovered off the coast of Western Australia.\\nQuantum - Radioactivity\\nIn a millisecond, on July 16, 1945, the evolution of the human species took a remarkable turn.\\nPart 1: A Deadly Dose\\nRadio Program Sales - Hindsight: Save Our Sons\\nIn the closing days of 1964, Prime Minister Robert Menzies introduced a bill in Parliament which would prove to be one of the most controversial and divisive decisions in Australia\\'s history.\\nSecrets of Stalingrad\\nIt changed the course of World War II - and the whole 20th Century. But until now, the true story of the Battle of Stalingrad has remained shrouded in mystery.\\nShipwreck Detectives Series 1\\nThe Shipwreck Detectives, a dedicated group of Australian marine archaeologists, have made it their life\\'s work to uncover the truth, through discovery and excavation of some of Australia\\'s most no\\nThe Shipwreck Detectives discover ancient shipwrecks using the latest technology.\\nState Funeral of Alec Campbell - The Last Anzac\\nThe State Funeral for Alec Campbell the last Gallipoli Veteran, from the Cathedral Church of Saint David Hobart, Tasmania, held on Friday 24 May 2002.\\nUnfit to Command\\nDuring night exercises in January 1964 the flagship of the RAN, the aircraft carrier Melbourne, collided with the destroyer Voyager 20 miles off Jervis Bay in NSW.\\nVietnam Veterans March 1987\\nLive coverage of the Vietnam Veterans Welcome Home Parade from the Sydney Cenotaph, Martin Place to the Town Hall in October 1987.\\nVietnam Vets Parade and Dedication 1992\\nCoverage of March and Dedication ceremony of Vietnam Veterans Memorial in Canberra on 3 October 1992. Followed by the March of Remembrance by 32,000 servicemen and next of kin.\\nVivian Bullwinkel: An Australian Heroine\\nVivian Bullwinkel: An Australian Heroine chronicles the extraordinary life and legacy of the woman who is one of Australia\\'s greatest war heroines.\\nWoomera: Silent Partners, The\\nThe history of Woomera rocket range, from 1946 to 1979. The program includes declassified defence footage of life at Woomera and the 4,000 rocket tests conducted there.\\nRemembrance Ceremony for Vietnam\\n2006 was an extremely important year for honouring and remembering Vietnam veterans and also marking the 40th anniversary of the Battle of Long Tan.\\nPatriots Three\\nIn September 1915 a patriotic young Australian journalist named Keith Murdoch visited the Anzac battlefield at the Dardanelles where, just weeks before, thousands of Australian and British soldiers\\nFour Corners - Careful War, A\\nTwo soldiers lost in action in 2010 were Sapper Jacob Moerland and Sapper Darren Smith. Four Corners spent a month with Australian troops, much of it with their company.\\nEntombment of the Unknown (Australian) Soldier\\nLive coverage from Canberra of the ceremony at the Australian War Memorial when the body of an unknown Australian serviceman is interred with full military ceremony in a redesigned part of the Memo\\nEnough Rope - Anzac Day Special\\nWar changes everything and everyone. Each year on April 25 thousands of Australian men and women commemorate Anzac Day, each carrying with them memories as vivid now as the day they happened.\\n(-) Remove Health and Medicine filter Health and Medicine\\n(-) Remove Disease and Treatment filter Disease and Treatment\\n(-) Remove Schools Programming filter Schools Programming\\n(-) Remove BTN filter BTN\\nPeach\\'s Gold (1) Apply Peach\\'s Gold filter\\nABC Programs (684) Apply ABC Programs filter Technology to maximize the power of geothermal energy is actually an area that really needs to be explored. It is one area which has a lot of potential. The Earth generates huge amounts of natural energy underground that basically needs to be utilized. As we approach our daily lives, we have no clue about the tremendous force that lies below our feet. All we must do is discover a way to take advantage of that energy for ourselves. The heart of the Earth is about sixty times hotter than boiling water. There is a lot of energy merely a few miles below the Earth\\'s surface that have already been created from the scorching heat generated from the Earth\\'s core.\\nIf you have ever watched what takes place when a volcano erupts, you will understand that there is much power and also energy in the magma, or superheated fluids. Some of these types of fluids come to the surface in the form of water vapor that is released in vents. Many people have created their very own vents and containment chambers to transform the magma into energy to power their households. A plant which could take advantage of this powerful resource needs to be built close to an area with a great source of heated fluid. Steam would be generated from the fluids that would be forced to the surface through the tubes that have been fitted down directly into the magma. An adequate amount of the steam would produce electricity, by turning a turbine engine.\\nNeedless to say, using geothermal energy on a massive scale does have a handful of controversy. Some critics believe that the cost of research and implementing is too costly and too time consuming. On top of that, the cost to build a plant is high with absolutely no guarantee that it could turn a profit. There is furthermore a chance that once a plant is completed, there might no longer be enough steam to generate electricity. There is also deep concern by environmentalists that toxins will also be brought up as well as the steam.\\nBut the advantages to utilizing geothermal energy significantly outweighs the criticisms. Further research should show that the energy would be provided by the Earth, so any toxins would be minimal. As soon as a geothermal plant is set up the work needed to channel the energy isn\\'t that great, making this type of energy very efficient.\\nThe natural environment would be disrupted less, because the plants are smaller compared to giant dams, atomic energy, or electrical facilities. With substantial use of geothermal energy, there would be less reliance on coal and oil for fuel.\\nWhat we realize for sure is that the price of geothermal is moving down and that the energy itself is an inexhaustible resource. While the initial upfront cost is still significant, once the capital is made back, it will be a very cheap source of energy. This really is a source of energy that will likely be in demand. In 1900, mathematician and physicist Lord William Thomson Kelvin proclaimed, \"There is nothing new to be discovered in physics now. All that remains is more and more precise measurement.\" Kelvin was wrong, of course. In fact, he could not have been more incorrect—the next few decades alone saw the discovery of general relativity, other galaxies, radioactivity, and quantum mechanics, to name a few fields.\\nA while back I posted about some awesome optical illusions. The last few posts have been text-heavy, so I\\'m going to shake things up a bit with some pictures and videos. These are some of my favorite mind-tricks on the web. Share your favorites and let me know which one\\'s you\\'d like me to explain. Enjoy!\\nThese men are the same size. Seriously. Grab a ruler and check for yourself.\\nThink you see the world as it is? Think again. As discussed in an earlier post, our brains filter input from the senses, piecing together a world that differs from reality. To shake up the old blogging formula (and to make room for these theoretical math midterms currently dominating my life), I\\'ve compiled a list of some of the coolest optical illusions on the web. Aside from being awesome, these give insight into how the brain interprets visual cues. I\\'ll be back soon with the science behind the coolest ones.\\nThe textbook \"motion where there is no motion.\" Tried and true. A classic. This Baby\\'s Feelings About Avocados Are Basically The Same As Our Feelings About Paying Extra For Guacamole — VIDEO\\nBy Maya Kachroo-Levine\\nBeing healthy is the worst. In theory, we all like clear skin, and that fresh invigorated feeling after lunch that only happens when you decide against the cheeseburger. But sometimes you just want to lean in to a particularly awful day and say an enthusiastic \"YES\" to anything with heavy cream. And you deserve it. You deserve to say no to kale, sweet potatoes, avocado and green juice. And so does this baby who tried her first avocado and hated it. Whatever degree of \"can\\'t even\" you hit with green juice, this kid\\'s got you beat by a long shot. She looks like she just saw an 8-foot spider crawl out of the Forbidden Forest. (She\\'s the baby version of Ron Weasley.)\\nI understand that those of you have a strong affinity for these blessed fruits might be a little offended. I feel you—I\\'ve legitimately written articles on how much I like avocados. But it\\'s hard to be offended by a child who\\'s less than a year old. Her bib is lined with pink and polka dots, guys. Come on. Just let her be miserable and trust that her scrunched up face will make you happy because that\\'s how the internet works.\\nPresenting, the baby whose post-avocado pout is the cutest thing you\\'ll see all day:\\nNot everyone was born to love guac.\\nC l e a r l y.\\nWatch the full blown avocado-induced tantrum:\\nKentuckyFriedIdiot on YouTube\\nIf you\\'ve spent enough time trolling for viral videos, you\\'re fully aware that this isn\\'t the only baby on the Internet who can\\'t deal with specific foods. While I\\'m not in love with everyone one of those children (sorry, my maternal gene only goes so far on YouTube), I\\'ve got a special place in my heart reserved for the babies who just ate their first lemons.\\nWhat\\'s that? You\\'ve never heard of the babies trying their first lemons? That\\'s like saying you missed the \"Let\\'s get some shoes\" video. And we both know if you\\'re saying that, you\\'re lying. Fix yourself and watch some of these sassy baby faces:\\nfunnyplox on YouTube\\nA plus parenting, internet. We\\'re all so proud.\\nImages: YouTube (2) Eurobites: Trump Won\\'t Trash Privacy Shield, US Officials Predict\\nNews Analysis Paul Rainford, Assistant Editor, Europe 11/10/2016\\nAlso in today\\'s EMEA regional roundup: ETNO welcomes 700MHz moves; Gilat lands Spanish trains gig; Ziggo rebrands.\\nOK, he may try to build a you-can-see-it-from-space wall on the US-Mexico border, prepare the ground for civil war and instigate a new global economic depression through the imposition of trade tariffs, but the Privacy Shield, the framework which governs the transfer of data from Europe to the US, will be safe in the fun-sized hands of President-elect Donald Trump. As Bloomberg reports, that\\'s the encouraging message coming from the US Department of Commerce, which is insisting that the framework was designed with political transition in mind. The Privacy Shield, which replaced the discredited Safe Harbor arrangements, is intended to place stronger obligations on US companies handing Europeans\\' personal data, limit US government access to such data and provide EU citizens affected by such issues with greater chance of redress. (See Eurobites: Privacy Shield Gets EU Go-Ahead.)\\nThe European Telecommunications Network Operators\\' Association (ETNO) has welcomed the European Parliament\\'s decision to allocate 700MHz spectrum to mobile broadband by 2020, believing that this is necessary for Europe to maintain a leading role in the development of 5G. ETNO also thinks that EU member states should be allowed to retain the flexibility to allocate sub-700MHz spectrum to mobile broadband in a \"technology-neutral manner.\"\\nIsrael-based Gilat Satellite Networks Ltd. (Nasdaq: GILT) has landed a contract with Renfe, the Spanish railway company, which will see the vendor deploy its ER-7000 antenna and attendant technology on Renfe\\'s high-speed trains to provide passengers with mobile broadband.\\nSweden\\'s Tele2 AB (Nasdaq: TLTO) has appointed Stina Andersson EVP for strategy and business development, effective December 5. Andersson was most recently investment director at Kinnevik, Tele2\\'s largest shareholder. Her brief will include oversight of Tele2\\'s IoT division.\\nIn a move that demonstrates the power of local branding, Ziggo B.V. , the Dutch cable operator owned by Liberty Global Inc. (Nasdaq: LBTY), is dropping Liberty\\'s Horizon brand in favor of Ziggo, Broadband TV News reports. Ziggo says that focus group research showed that users of its Ziggo-branded services were the most loyal customers. The initial rebranding will affect Horizon Go, an app that offers live streaming TV on mobile devices.\\n— Paul Rainford, Assistant Editor, Europe, Light Reading\\nCybersecurity: Priorities & Proposals for Small ISPs Nothing beats delicious food and colourful cocktails on a Sunny day! We had so much fun exploring and sampling the culinary delights that Taste of Sydney had to offer this year. Loving that feeling of leaving with bellies full from eating from some of the best Sydney has to offer! The all-white Nike Air Force 1 Low is more than just a shoe: it\\'s a veritable cultural icon. One of the Swoosh Brand\\'s best-selling, most recognizable, and most influential silhouettes, it\\'s garnered thunderous acclaim from a smorgasbord of subcultures. Although it\\'s been said that you don\\'t want to mess with a classic, a new premium leather take on the all-whites has surfaced — and it features a compelling embellishment: oversized Swoosh logos. Due to the monochromatic color palette, you\\'d be forgiven for mistaking this as a plain white-on-white at a brief glance, but closer inspection reveals that the Swoosh is indeed super-sized, taking up a vast majority of the real estate on both the lateral and medial quarter panels. Less noticeable tweaks are also present on the heel and tongue, with the normal style of Nike Air branding o replaced by debossed leather accents. If you like the updated look, you can check these Air Force 1s off your shopping list via the retailers below for $130 USD. Audioboom / Best of the BFFs: 4/9 to 7/9...in 3 minutes!\\nIn 3 minutes, Gregg Sussman and Frank Stampfl teach you how Derrick Henry falling low in a draft is robbery, and how Gregg can use his confrontational skills in life.\\nBest of Fantasy BFFs, August 27th to 31st...in 3 MINUTES!\\nThe Best of Fantasy BFFs Sept. 10th to 14th...in 3 minutes! Port lotniczy Katukurunda – port lotniczy położony w mieście Kalutara, w Sri Lance. Jest używany do celów wojskowych. Obsługiwany przez Sri Lanka Air Force.\\n\\nBibliografia \\n\\n Informacje na stronie OurAirports\\n\\nKatukurunda With Reinforced Corners and Two Internal Pouches. Adjustable Dividers and a Shoulder Carrying Strap. This case is durable and stylish!\\nThis stylish tool case is ideal for computer and copier repair technicians, electricians, photographers and all professionals who depend on their tools for a living. This Clarke tool box is constructed from silver anodized aluminum. The outside dimensions are 18.75\" x 14.25\" x 6.5\" and weighs 8.5 lbs. The inside dimensions are 17\" x 12\". It has reinforced corners, key lock latches, 2 internal tool pouches, adjustable dividers and a shoulder carry strap.\\nOutside Dimensions: 18.75\" x 14.25\" x 6.5\"\\nInside Dimensions: 17\" x 12\" Q: How to create volatile table inn teradata using SAS dataset without sql sandbox I have a SAS dataset and I need to create a volatile table in Teradata using the SAS dataset. But, I do not have a sandbox to store the table on Teradata server. Is there a way that I can create a Teradata volatile table from a SAS dataset without SQL Sandbox.\\n\\nA: It is pretty simple to create a volatile table in Teradata, just use the dbmstemp=yes option on your libname statement. \\nlibname TDWORK teradata connection=global dbmstemp=yes .... ;\\ndata tdwork.test1 ;\\n set sashelp.class ;\\nrun;\\n\\nMake sure to use the connection=global option on all of your LIBNAME and CONNECT statements so that all of the connections to Teradata use the same session so you can see your volatile table. Keep at least one of the libref\\'s open so that the connection persists.\\nThen you could also use passthru SQL to create a volatile table.\\nproc sql ;\\n connect to teradata (connection=global .... );\\n execute (\\n create volatile table test2 as (\\n select * from test1\\n ) with data on commit preserve rows \\n ) by teradata;\\nquit;\\n\\nOr to reference the volatile tables in pass thru SQL code. \\nSo if you wanted to pull out of Teradata all the records from MYDB.MYTABLE where NAME was in the list of names you uploaded into the volatile table TEST1 you made with the first data step above you could use code like this:\\nproc sql ;\\n connect to teradata (connection=global .... );\\n create table mytest as select * from connection to teradata \\n ( select * from mydb.mytable \\n where name in (select name from test1)\\n );\\nquit;\\n\\n Philogenia redunca – gatunek ważki z rodziny Philogeniidae. Występuje na terenie Ameryki Południowej.\\n\\nPrzypisy\\n\\nBibliografia\\n \\n\\nPhilogenia\\nGatunki i podgatunki zwierząt nazwane w 1989 roku The Electron Pencil\\n\"The blog has made Glab into a hip town crier, commenting on everything from local politics and cultural happenings to national and international events, all rendered in a colorful, intelligent, working-class vernacular that owes some of its style to Glab\\'s Chicago-hometown heroes Studs Terkel and Mike Royko.\" — David Brent Johnson in Bloom Magazine\\nBy glabwrites\\tBarry Manilow, Bleeding Heartland Rollergirls, George Wallace, Health Care Reform, Higgs Boson, Marshall McLuhan, Mitch Daniels, Mitt Romney, NAACP, Poverty, Richard M. Nixon, Shelli Yoder, Soma Coffee, Todd Young, Tyler Ferguson\\nThe Pencil Today:\\nTHE QUOTE\\n\"Affluence creates poverty.\" — Marshall McLuhan\\n♢\\nI have a feeling Rep. Todd Young (R-Indiana) is getting a little concerned about Shelli Yoder.\\nShe Works Hard For The Money\\nThe Dem challenger, you may recall, came out of nowhere a couple of weeks before the primary filing deadline and proceeded to trounce four opponents, two of whom were actually serious candidates.\\nYoder\\'s been criss-crossing the 9th District, shaking hands, marching in parades, and listening to folks talk about the state of the nation in diners and church basements. She\\'s been raising dough, too.\\nThe former Miss America second runner-up is looking more and more like the real deal.\\nErgo, the Todd Young campaign is hitting up contributors for what might turn out to be a contest. He\\'s raised $1.2M so for this election season, according to the Herald Times.\\nTYLER EARWORMS ME\\nThe inimitable Tyler Ferguson (Kaka Caliente of the Bleeding Heartland Rollergirls) blew into Soma Coffee this AM, singing \"Mandy.\"\\nYou remember \"Mandy\" don\\'t you? The Barry Manilow hit of 1974 wherein, according to legend, he sings lovingly — some say a little too lovingly — of his lapdog. He wasn\\'t, of course; the song was written by someone else years before Manilow turned it into his first chart-topper.\\nAnyway, Tyler/Kaka was pumped because the selfsame Manilow, she gushed, will be playing in these parts soonly. \"You can get tickets for ten dollars!\" she said. \"I\\'d pay that for him. Nothing more, though.\"\\nWhere? I demanded, so I could leave the region while he was in it.\\n\"I dunno,\" Tyler said. \"Somewhere.\"\\nWhich, come to think of it, is the definitive Tyler/Kaka answer.\\nSo, here\\'s the deal. Manilow will play in Indy on August 3rd and in Louisville, July 27th. Bloomington will be, in other words, surrounded by Barry Manilow.\\nAnd now I have \"Mandy\" looping in my brain.\\new\\'RE BROKE (EXCEPT FOR THAT TWO BILLION BUCKS WE FOUND)\\nI\\'ve never pretended to understand high finance. It\\'s as baffling to me as Higgs Boson is to a kindergartner.\\nAll I know is Indiana Gov. Mitch Daniels and his legislative co-conspirators within the last couple of years have moaned and groaned about how the economy has ruined state finances and, therefore, school funding must be slashed to the bone.\\nSorry, Kids\\nNow, all of a sudden, there\\'s a $2.15B surplus in the Indiana state treasury? And now, all of a sudden, the state\\'ll be to be mailing out $100 checks to each and every taxpayer in the state? During an election year?\\nAre you confused about this, too? I have a sneaking suspicion, though, it all makes perfect sense.\\nROMNEY\\'S SMART\\nSay what you will about Mitt Romney, he played a brilliant hand when he spoke to the NAACP the other day.\\nIn fact, he took a page out of the playbook of the Republicans and Cro-Magnon Democrats of the \\'60s by putting himself in a position to be booed by attendees of the venerable civil rights organization\\'s annual conference the other day.\\nLadies And Gentlemen Of The Negro Race….\\nThe likes of Dick Nixon and George Wallace occasionally would speak before hostile crowds and withstand their jeering just to remind their core constituencies which side they were on. Wallace was particularly adept at the tactic; he loved ranting and raving before college crowds, knowing full well he\\'d get verbal tomatoes (and sometimes the actual vegetable/fruit) thrown at him. His anti-intellectual base would read of the rude response in the papers or see it on TV news and be reminded how much they hated pointy-headed liberals.\\nYou College Kids Hate Me, Donchya?\\nRomney told the NAACP shindig that President Obama\\'s health care reforms were garbage. Natch, the NAACP-ers gave him the raspberry.\\nSome wags say Romney failed miserably in his effort to court black voters. Now there\\'s a misreading of the situation for you. Honestly, do you think Mitt expects to get any meaningful portion of the black vote?\\nNeither do I. But now the Me Party-ists and the shootin\\' iron-totin\\' back country Republicans know for sure that them blacks (saying the word with scorn and rage) are again\\' Romney almost as much as real Americans hate Obama.\\nElectron Pencil event listings: Music, art, movies, lectures, parties, receptions, games, benefits, plays, meetings, fairs, conspiracies, rituals, etc.\\n◗ Stable Studios, Spencer — Bluegrass festival 2012, tonight: Open jam — tomorrow: The Travelin\\' McCoury\\'s, The White Lightning Boys, Rumpke Mountain Boys, Flatland Harmony Experiment, New Old Cavalry, the Stuttering Ducks, The Seratones; 1pm-midnight\\nThe White Lightning Boys\\n◗ IU Dowling International Center — English Conversation Club, for non-native speakers of American English; 1pm\\n◗ The Venue Fine Arts & Gifts — Opening reception, \\'Our Fine Feathered Friends\" exhibit by William Zimmerman, John Gould, James Tracy, Joanne Shank, and Julia Ferguson; 6pm\\n◗ IU Auer Hall — Summer Music Series: String academy final student recital; 6-8pm\\n◗ IU Art Museum — Jazz in July series, Mahluli-McCutchen Quartet; 6:30pm\\n◗ IU Fine Arts Theater — Ryder Film Series, \"Jiro Dreams of Sushi\"; 7pm\\n\"Jiro Dream of Sushi\"\\n◗ Muddy Boots Cafe, Nashville — Whipstitch Sallies; 7-9pm — Bonz; 9:30-11:30pm\\n◗ Monroe Lake, Paynetown SRA — Dedication for new Activity Center, ice cream social; 7-8:30pm\\n◗ IU Wells-Metz Theatre — Musical, \"You Can\\'t Take It With You\"; 7:30pm\\n◗ Brown County Playhouse, Nashville — Musical, \"Footloose\"; 7:30pm\\n◗ The Comedy Attic — Chelsea Peretti; 8 & 10:30pm\\n◗ Cafe Django — Earplane, Latin-Brazilian jazz; 8pm\\n◗ Max\\'s Place — Sad Sam Blues Jam; 8pm — Ziona Riley; 10pm\\n◗ IU Musical Arts Center — Summer Arts Festival: Symphonic series, conductor Carlos Kalmar, works by Rossini, Dvorak, and Brahms; 8pm\\n◗ IU Fine Arts Theater — Ryder Film Series, \"Elles\"; 8pm\\n◗ The Player\\'s Pub — Crossover; 8pm\\n◗ IU Fine Arts Theater — Ryder Film Series, \"Gerhard Richter Painting\"; 8:30pm\\n◗ Bear\\'s Place — The Brown Bottle Flu, Hotel, War, Coralus; 9pm\\n◗ The Bishop — Film, \"Own Worst Eenemy\"; 9pm\\n◗ The Bluebird — Dot Dot Dot; 9pm\\n◗ Uncle Elizabeth\\'s — Vicci Laine & the West End Girls; 10pm & midnight\\nOngoing:\\n◗ Ivy Tech Waldron Center — Exhibits:\\nJohn D. Shearer, \"I\\'m Too Young For This @#!%\"; through July 30th\\nClaire Swallow, \\'Memoir\"; through July 28th\\nDale Gardner, \"Time Machine\"; through July 28th\\nSarah Wain, \"That Takes the Cake\"; through July 28th\\nJessica Lucas & Alex Straiker, \"Life Under the Lens — The Art of Microscopy\"; through July 28th\\n◗ IU Art Museum — Exhibits:\\nQiao Xiaoguang, \"Urban Landscape: A Selection of Papercuts\" ; through August 12th\\n\"A Tribute to William Zimmerman,\" wildlife artist; through September 9th\\nWilli Baumeister, \"Baumeister in Print\"; through September 9th\\nAnnibale and Agostino Carracci, \"The Bolognese School\"; through September 16th\\n\"Contemporary Explorations: Paintings by Contemporary Native American Artists\"; through October 14th\\nDavid Hockney, \"New Acquisitions\"; through October 21st\\nUtagawa Kuniyoshi, \"Paragons of Filial Piety\"; through fall semester 2012\\nJulia Margaret Cameron, Edward Weston, & Harry Callahan, \"Intimate Models: Photographs of Husbands, Wives, and Lovers\"; through December 31st\\n\"French Printmaking in the Seventeenth Century\"; through December 31st\\n◗ IU SoFA Grunwald Gallery — Exhibits:\\nKinsey Institute Juried Art Show; through July 21st\\nBloomington Photography Club Annual Exhibition; July 27th through August 3rd\\n◗ IU Kinsey Institute Gallery — \"Ephemeral Ink: Selections of Tattoo Art from the Kinsey Institute Collection\"; through September 21st\\n◗ IU Lilly Library — Exhibit, \"Translating the Canon: Building Special Collections in the 21st Century\"; through September 1st\\n◗ IU Mathers Museum of World Cultures — Closed for semester break\\n◗ Monroe County History Center — Exhibits:\\n\"What Is Your Quilting Story?\"; through July 31st\\nPhoto exhibit, \"Bloomington: Then and Now\" by Bloomington Fading; through October 27th\\nArchives Select Month January 2020 December 2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 January 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 It encourages sellers of the same domain to sell on their platform. And willing sellers can use API integration solutions developed by the independent e commerce solution provider companies.\\nFounded in 2002, Wayfair is a home goods e-commerce company. Receiving over 127 million unique visitors yearly, the company has grown immensely in the recent years with revenue of over $3 billion. Doing business in the home goods section, it presents a huge opportunity to 3rd party sellers of this domain.\\nIt is here Cedcommerce, with its mission to facilitate selling on e commerce platforms for online sellers, comes to the picture. It offers Wayfair API integration makes it extremely easy for sellers to sell their products on Wayfair.\\nWhat is Wayfair Integration from CedCommerce?\\nThrough Wayfair APIs, a channel is created by Cedcommerce which enables seamless transferring of products on Wayfair.com. This extension can be used by sellers/merchants using Magento1/Magento2, WooCommerce, Prestashop, Shopify etc.\\nWhat all can be done and managed through Wayfair Integration By Cedcommerce ?\\nImports all products of the store .\\nChanges made are reflected on Wayfair.com.\\nManipulate orders of Wayfair.com from YOUR store. Q: libvirt-bin.conf file missing So recently I\\'m working on Opnestack live-migration \\nI followed this guide to setup my environment and in one of the configuration step I need to modify both /etc/init/libvirt-bin.conf and /etc/default/libvirt-bin file but I couldn\\'t find these 2 files in my system.\\nI\\'ve tried apt-get install libvirt-bin and it said it is already the newest version.\\nI also tried service libvirt-bin start but nothing happened.\\nJust wondering did I miss something here or the tutorial is a little too old(Oct. 2013) and libvirt has changed a lot ?(though I don\\'t think so) \\nThanks for the help .\\n\\nA: A little late to the party ... but ... libvirt has actually changed quite a bit. Especially between Ubuntu 12.04 and 16.04. I had a similar problem after manually upgrading libvirt, I couldn\\'t find libvirt-bin.conf to add -l flag for listening to tcp.\\nIt turns out that the configuration file path is now at /etc/default/libvirtd instead of /etc/default/libvirt-bin.\\nFinally, you can invoke systemctl restart libvirtd or service libvirtd restart to restart libvirt\\n\\nA: *\\n\\n*Use config file /etc/default/libvirtd and enable -l\\n\\n\\n#options passed to libvirtd, add \"-l\" to listen on tcp\\nlibvirtd_opts=\" -l \"\\n\\n\\n*Modify /etc/libvirt/libvirtd.conf.\\nlisten_tls = 0\\nlisten_tcp = 1\\n\\n*Restart Libvirtd\\nLibvirt is listening on port 16509\\n$ netstat -lntp | grep libvirtd\\ntcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN 38482/libvirtd\\ntcp6 0 0 :::16509 :::* LISTEN 38482/libvirtd \\n Finding a drugstore foundation that matches my skintone is a rarity for me. But Rimmel\\'s Match Perfection Foundation in the shade 010 Light Porcelain is just that - match perfection.\\nThe formula is a little liquidy for my taste but it applies well using my Real Techniques Stippling Brush follower by my Real Techniques Buffing Brush for blending. It takes around 1 1/2 pumps to give medium coverage but I find as the colour matches so well I can get away with dotting this around areas of breakout or redness for a natural finish, without having to cover my entire face. And on days where I am looking for a little more coverage this pairs great with my Collection Lasting Perfection Concealer. It\\'s a great all-round, everyday foundation.\\nOnce applied my skin feels silky and light but still as though I\\'m still wearing something. I\\'ve heard that this is a great dupe for those lusting after the Estee Lauder Doublewear Stay-In-Place Makeup and I\\'m afraid I have yet to compare the two. As for it\\'s staying power Rimmel Match Perfection Foundation remains somewhere between average and good. It fades somewhat on my oily skin but I can still manage a full day of work before the coverage fades below critical levels.\\nThis is definitely a little drugstore gem I recommend! A Healthy Beat\\nA Healthy Beat Just Feels Right.\\nFacts you should know About Hypnotherapy\\nFacts that you should know about your health before putting yourself in trouble\\nShould You Visit a Men\\'s Clinic for Low Testosterone?\\nHormone Therapy for Men Benefits and Risks\\nThe Benefits of Skin Tightening\\nHow to effectively lose weight after c –section\\nHome>>Therapy>>Facts you should know About Hypnotherapy\\nSam Archer2023-01-080\\nEven though hypnotherapy has been used since the 1700s, the medical community still views it skeptically. It\\'s not just for mentally disturbed people; everyone can benefit from it. It\\'s a proven method for self-improvement and performance.\\nIn hypnosis, positive changes can be made in your life, whether you want to lose weight, manage stress, or cure insomnia.\\nHypnosis occurs naturally in your brain when you\\'re relaxed, making it a very effective method. There is, however, a growing acceptance and recognition of the therapy. If you find yourself less focused and stressed, you can seek a help from hypnosis Illinois.\\n\"Hypnosis\" comes from the Greek word \"Hypnos,\" which means sleep. Hypnosis refers to a mental state in which a person becomes aware they are entering a different mental state.\\nHypnosis is a unique psychological and physiological condition that superficially resembles sleep but is characterized by the individual\\'s ability to operate at a level of consciousness different from the typical waking state.\\nThis condition is distinguished by enhanced receptiveness and responsiveness, where inner experience sensations have the same weight as outer experiences.\\nIt is a state of altered consciousness, where you can become more focused on the present and more open to suggestions. It\\'s used for many purposes, from treating physical ailments to improving your performance at work.\\nStages of Hypnosis:\\nThe four stages of hypnosis are induction, deepener, suggestions, and emergence.\\nDuring this stage, you start to relax, concentrate, and avoid distractions. Your hypnotherapist will guide you through this phase using controlled breathing and progressive muscle relaxation techniques.\\nDeepener\\nThis stage continues the last one, making it easier to relax and focus. This stage usually involves counting down or imagining yourself descending stairs. The first two steps aim to ease your receptivity to suggestions.\\nThis is the stage for genuine change in experience, behavior, or perception, as suggested. In addition to imagery, your hypnotherapist will select carefully chosen language to evoke your subconscious. Typically, the ideas are symptom-oriented (to alleviate a symptom) or exploratory (to investigate events associated with the onset of symptoms). There may be changes in emotion, perception, feeling, memory, thinking, or action.\\nYou emerge from hypnosis during this phase. Your hypnotist might use reverse deepeners, like making you think you\\'re going upstairs or counting.\\nCam Lucero can administer hypnotherapy safely. Hypnosis does not include mind control or brainwashing. The therapist cannot force you to do anything against your will.\\nEmail Newsletterq\\nBack Pain Cosmetic Surgery Dental Care Diabetes Exercise Fitness Equipment General Hair Loss Health and Fitness Men Health Pregnancy Skin Care Supplements Therapy Weight Loss Yoga\\n© 2023 A Healthy Beat | WordPress Theme Ultra Seven Walter C. Willett, Jeffrey P. Koplan, Rachel Nugent, Courtenay Dusenbury, Pekka Puska, and Thomas A. Gaziano. Take 4 prominent teams in 1860: African-Americans had been in chains, European Jews had been routinely massacred within the ghettos and shtetls they have been confined to, women around the world had been denied the opportunity to work outdoors the house and made virtually completely subordinate to their husbands, and LGBT folks were invisible.\\nCar-sharing companies, which allow people to make a reservation at the faucet of a private mobile system, are expected to develop considerably within the next two years, with dramatic increases in the variety of users and in revenues. The decrease estimate—or one even decrease—is possible as a result of trans fats could be eliminated on the supply rather than relying solely on modifications in individual behavior. Since intellectual property shouldn\\'t be being taken in severely in China, many autos are designed identically to appear like some other automobiles round. In the meantime, British company Adrian Flux Insurance Services this month launched what it stated could be the primary driverless car policy\" in the world. Since final yr China has overtaken Germany to emerge because the third largest automobile making country on this planet.\\nAutomobiles could also last more as collisions cease occurring and constructed-in sensors facilitate the creation of components on demand. Dependence on automobiles affects bodily exercise, because those who use public transportation are inclined to walk extra. Ford is the second largest automaker within the US and the fifth-largest in the world based on annual car sales in 2010.\\nThe following checklist discusses six features of food regimen for which robust evidence indicates essential health implications ( table 44.1 ). These targets are in keeping with a detailed 2003 World Health Organization (WHO) report ( WHO and FAO 2003 ).\\nThough murder crime rates climbed again up from their historic lows between the Nineteen Seventies and Nineteen Nineties, reversing progress made because the late 19th century, they\\'ve collapsed worldwide in the 21st century. The company was founded by Kiichiro Toyoda in 1937 as a by-product from his father\\'s company Toyota Industries to manufacture automobiles. People have made fortunes and drivers of those machines have made their title in history. Reviewed by Nathan Ford\\nIt\\'s been less than a year since this LA based bunch unleashed their spectacular debut on the world via Ty Segal\\'s God? imprint (on Drag City), and the follow up, \"Golem\", is even more of a treat.\\nLess reliant on synths, studio trickery, and psychedelia in general, \"Golem\" is, I imagine, an excellent indicator that their live show is a hair raising affair. The press release acknowledges Electric Wizard as a primary influence on \"Golem\", which caused some raised eyebrows here - eyebrows which remained raised as \"Unexplored Map\" exploded into life. Wow. This is one ferocious beast of a garage psych record. One with raw, terrifying guitars that are equally at home with bludgeoning riffery, or spiralling -out-of-control guitar leads. One with blunt force trauma drumming. And also fortunately, one that knows when to tone things back with unexpected subtlety - which isn\\'t done often, but always exactly when needed.\\nEven when the music has you pinned down with your arm uncomfortably twisted behind your back, vocalist Cory Hanson is there adding a layer of sweetness. Sounding uncannily like Ty Segal at times, his is a game changing presence, with the sort of gifted melodicism that helped the likes of Kurt Cobain reach a level of universal connection that Mark Arm could never quite attain (for example). What I\\'m trying to say is that these are some seriously engaging vocal performances, especially when Hanson hits his falsetto.\\nI realise that I\\'ve painted a picture of a really noisy record here, and a lot of the time that is the case. These boys do heavy, heavy garage psych as well as anyone out there at the moment (\"Floating Head\" is a particularly great example), but the album\\'s best moments fall between these heavier spaces. The best of these, and probably the most eye opening signpost for future promise comes with \"Melted Rope\". It\\'s a massive glam epic; a \"Width of a Circle\" for the now, complete with huge mellotron blasts and some lovely, lyrical guitar work which will have Mick Ronson smiling quietly to himself, wherever he is.\\nThis year\\'s totally essential rock album.\\n\"Golem\" can be pre-ordered here. Child Care Negligence\\nSee All Cases\\nDunn, NC\\nView All Areas We Serve\\nCall Now for a Free Consultation (800) 434-8399\\nTap to Call: (800) 434-8399\\nHome » Blog » Hardison & Cochran Files First of Many DePuy ASR™ Cases\\nHardison & Cochran Files First of Many DePuy ASR™ Cases\\nYesterday, Hardison & Cochran filed the first of many cases against DePuy Orthopaedics, Inc., and its parent company, Johnson & Johnson. In August 2010, Depuy Orthopaedics recalled two of their hip replacement systems. The recall has been issued for approximately 93,000 defective implants after it was found that the device was failing at a rate of 12%-15%. Due to this failure, many patients were requiring additional surgeries to revise the original hip replacement. The two implants being recalled are the ASR™ Acetabular Cup System and DePuy ASR™ Hip Resurfacing System. The DePuy ASR™ Acetabular Cup System is a metal-on-metal hip component used during a hip replacement surgery in the United States and worldwide. It was introduced in 2004. The ASR™ hip resurfacing system, which is used in a popular alternative to tradition hip replacement, has not been approved in the United States but has been used abroad.\\nManaging Partner of Hardison & Cochran, Ben Cochran, spoke briefly today about the filings. \"This is a dangerous product that should have never been marketed. It is subject to a high failure rate, and is likely to cause metal toxicity,\" said Cochran. \"In addition to this case being filed, we\\'re investigating many cases where a person\\'s well being suffered tremendously due to this product\\'s failure,\" he added.\\nFor a full look at the DePuy Hip Replacement Recall news covered on our blog, please click here\\nPhoto courtesey of Simon Davison by way of Flickr Creative Commons.\\nRequest for a Free\\nSend For A Free Consultation\\nHardison & Cochran serves North Carolina Communities\\nOver the years, we have represented thousands of clients and we very much enjoy learning about the things that are dear to them. In 2011, we conducted a client survey that went out to our current and former clients. One of the questions in the survey was \"What do you enjoy doing in your leisure time?\" Over 50% of our clients replied that they enjoy \"giving back\" and \"helping out\" their community.\\nResigning Your Job While on Workers\\' Compensation\\nSome people who receive workers\\' compensation benefits feel like their life is on hold. As they go through treatment to recover from their injuries, they know they won\\'t be able to return to their former line of work. But they\\'re ...\\n(800) 434-8399 Call Us 24/7 - We Come To You\\n7340 Six Forks Road\\nEmail: info@lawyernc.com\\nInfo Office Hours\\nRequest for a Free Strategy Session\\nSend For A Free Strategy Session\\nWilmington Southern Pines Fayetteville Greensboro Dunn Raleigh Durham\\n© 2021 Hardison & Cochran. All Rights Reserved.\\nSite by Consultwebs.com: Law Firm Website Designers / Personal Injury Lawyer Marketing. microsoft excel templates for project management and to prepare amazing microsoft excel project management tracking templates 726.\\nmicrosoft excel templates for project management feat project management dashboard excel template free download time tracking task spreadsheet monster status to create amazing microsoft office excel t.\\nmicrosoft excel templates for project management packed with excel blank screen blank excel spreadsheet for make remarkable free excel project management tracking templates microsoft 155.\\nmicrosoft excel templates for project management feat project management excel template project excel template to make astonishing microsoft excel templates project management 967.\\nmicrosoft excel templates for project management together with project management templates excel free download excel project management plan for create perfect microsoft excel templates for project m.\\nmicrosoft excel templates for project management with excel template project management to prepare stunning microsoft office excel templates project management 345.\\nmicrosoft excel templates for project management combined with budget tracker excel template free project management tracking monthly expenses business to frame inspiring microsoft excel project manag.\\nmicrosoft excel templates for project management with excel templates for project management inspirational ms plan template free to prepare astounding microsoft excel 2010 project management templates.\\nmicrosoft excel templates for project management together with excel templates for project management task planning list template manager tool planner daily t pro to do for prepare cool free excel pro.\\nmicrosoft excel templates for project management with excel project management ate ates free expenses to prepare stunning microsoft excel templates for project management task planning 815.\\nmicrosoft excel templates for project management with excel project plan template chart excel s in free project management templates template chart example to make stunning microsoft office excel temp.\\nmicrosoft excel templates for project management also ms excel project plan template office management free tracking templates presentations and spreadsheet expert for produce perfect microsoft excel.\\nmicrosoft excel templates for project management as well as task tracking spreadsheet template to produce stunning microsoft excel templates for project management task planning 232.\\nmicrosoft excel templates for project management plus excel templates for project management dashboard free f for frame astounding microsoft office excel templates project management 616.\\nmicrosoft excel templates for project management with free excel project schedule template to produce inspiring microsoft excel templates project management 581.\\nmicrosoft excel templates for project management with project management dashboard excel template free excel project planner template for produce cool microsoft office excel project management template.\\nmicrosoft excel templates for project management feat project in excel to produce stunning free excel project management tracking templates microsoft 693.\\nmicrosoft excel templates for project management with 1 to produce astounding free excel project management tracking templates microsoft 395.\\nmicrosoft excel templates for project management and download by excel project management template plan free sample planning spreadsheet to make cool free microsoft excel templates for project managem.\\nmicrosoft excel templates for project management with awesome project management documentation templates lovely excel templates for project management for prepare awesome free excel project management.\\nmicrosoft excel templates for project management and free simple chart excel template project management chart in excel free simple template simple excel to produce astounding microsoft excel template.\\nmicrosoft excel templates for project management with excel project tracker template project management template excel free download free excel project management tracking templates to make perfect mi. Original springs for optimum running of your BCI machine! All Bavarian Custom Irons\\' springs are manufactured from high quality German spring steel.\\nSprings are wear and tear parts and so they will eventually wear down or break. Please ONLY replace the springs on your BCI machine with original springs. We cannot guarantee if springs are used from other manufacturers that the machine will run correctly after you replace them since Bavarian Custom Irons machines are matched to their springs! Many down-filled products are for sale on Amazon. In bedding items with 100 or more customer reviews, there are 10 down and down-feather pillows, 6 featherbeds, and 8 comforters (for each of these items, there are many more with fewer reviews). Other down bedding articles sold on Amazon include down blankets and duvets. The greatest variety of manufacturers is in pillows, while down comforters are dominated by Egyptian Bedding, which has almost ⅔ the down comforters with over 100 customer reviews, collectively the highest number of reviews (Natural Comfort has the highest number of reviews for one item), and the highest average customer rating for several items (Snowman has the highest rating for one item).\\nTo put it bluntly, down and feathers come from either live or dead birds, shed or plucked.\\nEider ducks are the most productive live source of shed down. The mother duck sheds a large amount of down while preparing her nest for brooding, and she sheds more while brooding. With a tamed eider duck, extra down can be frequently harvested without harming or alarming the bird. Brood down is also collected from other domesticated waterfowl.\\nDown and feathers can be collected when birds molt in the spring and the fall. The advantage lies with domesticated birds, since the product is shed in controlled places and is cleaner and more secure than down collected in the wild.\\nIn ancient times and the Middle Ages, domestic fowl – both poultry and waterfowl – were raised for eggs and meat. Plucking a killed bird was part of the process of preparation for cooking, and the feathers and down were byproducts with their own value.\\nThis was true until modern large-scale farming with thousands of fowl raised together. Most of our eggs and chicken and turkey meat is now produced this way. The one drawback of this is that higher quality down is from waterfowl, but the milder-flavored meat from poultry is generally preferred over waterfowl, at least in North America. This limits the amount of waterfowl down which can be harvested without wasting carcasses.\\nIn some places, such as China, ducks and geese are raised primarily for meat. Duck and goose meat is more in demand in China and southeast Asia. Down and feathers are a significant and lucurative byproduct.\\nPlucking live birds used to be acceptable and common. It is no longer generally acceptable, and in many countries is also illegal. What is acceptable to the public is collection of shed down and feathers and plucking birds slaughtered for meat.\\nHowever, some farms in China pluck geese and ducks several times before butchering. The motivation for this is the demand for down by garment and bedding industries. The economic advantage of getting more down from a bird in its lifetime through several pluckings is that they are able to sell their down and feathers at a lower price for a larger market share. Some advocacy groups, such as PETA, have conducted undercover investigations.\\nAreas of concern in certification of down and feathers and products using them are (1) animal welfare, (2) sustainability, (3) organic aviculture, (4) hygiene, and (5) allergies. There are also labeling standards regulated by governments in Europe and North America concerning the ratio of down to feathers in a product.\\nFour organizations for the testing and certification of down and feather products, including bedding, are Responsible Down Standard (RDS), International Down and Feather Bureau (IDFB), American Down & Feather Council, and Allergy Standards Limited (ASL).\\nResponsible Down Standard (RDS) is an arm of the Textile Exchange (TE), a non-profit organizations whose members are firms engaged in textile industries. The concern of RDS is assuring consumers and manufacturers of down products that the down is procured in a manner not harmful to living birds. The part of the standard receiving the most public attention is the ban on live plucking.\\nOn their website, the International Down and Feather Bureau (IDFB) says, \"IDFB is the international trade association of the down/feather industry (processors of raw material and/or producers of finished articles, filled with down/feathers), the down/feather trade and independent testing institutes for down/feather as filling material.\" It is more narrowly focused than the Textile Exchange.\\nIDFB has 26 offices in 11 countries – most in China. This should not be surprising, since China is the largest producer of down and feathers.\\nThe American Down & Feather Council states on their site that they are \"a section of the Home Fashion Products Association (HFPA).\" Their concern is accurate labeling of down and feather products and the meeting of certain standards, including the humane treatment of the birds producing the down and feathers.\\nAllergy Standards Limited (ASL) was founded by healthcare professionals to set standards for allergens in consumer products and test the products for compliance with these standards. Certification by ASL means the products are free from allergens. This includes down and feather products.\\nRead \"Down and Feathers, Part 1\" here. Boy George and Culture Club bring their iconic pop music show to the Washington State Fair on Sept. 13. COURTESY PHOTO\\nFlashback to the \\'80s: Boy George and Culture Club come to the state fair on Sept. 13\\nSpecial guest is Thompson Twins\\' Tom Bailey\\nTuesday, March 20, 2018 10:16am\\nFor the Reporter\\nBoy George and Culture Club with special guest Thompson Twins\\' Tom Bailey perform at the Washington State Fair on Thursday, Sept. 13.\\nSince the band\\'s inception in 1981 Culture Club has sold more than 50 million records worldwide, led by their classic hits, \"Do You Really Want to Hurt Me,\" \"Karma Chameleon,\" and \"I\\'ll Tumble 4 Ya.\" The group is fronted by British singer/songwriter Boy George, who is universally recognized as one of music\\'s most renowned artists. George was presented with the Ivor Novello Lifetime Achievement Award in 2015 for his contribution to the music industry.\\nFor nearly three decades, fans of the Thompson Twins have been waiting for more live performances from one of the most iconic bands of the eighties. Now The Thompson Twins\\' Tom Bailey, with a new band, will be touring and performing the Thompson Twins hits.\\nPre-sale tickets go on sale at 10 a.m. Wednesday, March 21. Visit thefair.com and join the free E-Club for access to the best seats and ticket offers.\\nTickets go on sale to the general public at 10 a.m. Friday, March 23. Prices are listed in the chart below and include fair gate admission. Tickets will be available online or by phone at 888-559-FAIR (3247) daily, 7 a.m. to 8 p.m. Tickets can also be purchased in person at the fair\\'s box office, 9th Avenue Southwest and Meridian Street on most Saturdays, 10 a.m. to 2 p.m. Online and phone purchases are subject to standard processing fees. Tickets purchased on site will be charged a $3 per ticket service fee.\\nVisit thefair.com to see the updated lineup, or register online to receive announcements of pre-sale opportunities before concert tickets go on sale to the public.\\nThe concerts to date are:\\nDate, performance, time, prices (including fair gate admission)\\nSept. 2 – Florida Georgia Line (country) 7:30 p.m., $160, $145, $95\\nSept. 6 – Justin Boots Rodeo finale, evening performance, 6:30 p.m., $30, $20, $15 or $66 for family of 4 through Sept. 3\\nSept. 7 – Justin Boots Rodeo finale with Scotty McCreery (country) 6:30 p.m., $40, $30, or $40 for concert only (dirt GA)\\nSept. 8 – Justin Boots Rodeo finale, matinee performance, 1 p.m., $35, $25, $15 or $66 for family of 4 through Sept. 3\\nSept. 8 – Justin Boots Rodeo finale with Jamey Johnson (country) 6:30 p.m., $40, $30, or $40 for concert only (dirt GA)\\nSept. 9 – Justin Boots Rodeo finale, matinee, 1 p.m., $40, $30\\nSept. 10 – Rain: A Tribute to the Beatles (classic rock) 7:30 p.m., $50, $40, $30\\nSept. 13 – Culture Club with the Thompson Twins (p0p, \\'80s), 7:30 p.m., $65, $55, $45\\nSept. 14 – An Evening with Terry Fator (comedy) 7:30 p.m. $55, $40, $30\\nSept. 15 – Toby Keith (country) 7:30 p.m., $95, $80, $70\\nSept. 17 – Lauren Daigle with Zach Williams (christian) 7:30 p.m., $45, $35, $30\\nSept. 20 – Brett Eldredge with Runaway June and Devin Dawson (country) 7:30 p.m., $75, $65, $45\\nSept. 22 – Gabriel \"Fluffy\" Iglesias (comedy) 7:30 p.m., $65, $60, $45\\nSept. 23 – Rascal Flatts (country) 7:30 p.m., $90, $80, $60\\nFor more information about the Aug. 31- Sept. 23 fair (closed Tuesdays and Sept. 5), visit thefair.com.\\nSpecial ticket offers for Bindlestiff Family Cirkus\\nIf you could turn back time, would you? Q: Java thread id not changing I\\'m trying to unit test a class containing a ThreadLocal and wish to make tests not affect each other by starting a new thread in each test. However, they still do, and I don\\'t understand why.\\n@Test\\npublic void testThread() {\\n System.out.println(Thread.currentThread().getId());\\n new Thread(){\\n @Override\\n public void run(){\\n System.out.println(Thread.currentThread().getId());\\n }\\n }.run();\\n}\\n\\nOutput:\\n1\\n1\\n\\nCan someone explain why the IDs are the same even though a new thread is started?\\n\\nA: You should call the start method on the thread, not the run method. If you call run, you are running it in the same thread.\\n\\nA: try to change \\n}.run();\\n\\nwith\\n}.start();\\n\\n Casual Discussion Science Forum @scivillage › Culture › Religions & Spirituality\\n\"Santa survey\" shows children stop believing in Father Christmas at age eight\\nPages (3): « Previous 1 2 3 Next »\\nDec 20, 2018 02:55 PM (This post was last modified: Dec 20, 2018 03:57 PM by Secular Sanity.)\\nQuote: By allowing our children to participate in the Santa myth and find their own way out of it through skeptical inquiry, we give them a priceless opportunity to see a mass cultural illusion first from the inside, then from the outside. A very casual line of post-Santa questioning can lead kids to recognize how completely we all can snow ourselves if the enticements are attractive enough. Such a lesson, viewed from the top of the hill after exiting a belief system under their own power, can grid kids against the best efforts of the evangelists — and far better than secondhand knowledge could ever hope to do.—Dale McGowan from \"Parenting Beyond Belief: On Raising Ethical, Caring Kids Without Religion\"\\nIt\\'s a good first step. This Christmas is going to be really awkward.\\nWhen you realize that your parents are human...\\nTwo years after my father passed away, a woman contacted me and said that she was my sister. Her mother was one of my father\\'s ex-girlfriends. So, for the last twenty years, we\\'ve thought that we were related. She called me about month ago. She did a DNA test and found her real biological father. She\\'s not my sister.\\nI was combing through the Black Friday ads and noticed that the kits were on sale for half the price. I ordered two of them. I was joking with my mother. I told her that I ordered them and asked if she had anything she wanted to tell me. Speak now or forever hold your peace. Ha-ha…not! She did. She said that her and my father weren\\'t married when she got pregnant with me. She was married to a man that drank a lot. They split up and he moved to Oklahoma. She started sleeping with my so-called my father, but her first husband came back to town for a visit, and they had sex around the same time. WTF?\\nMy brother is a year younger than me. I asked about him. She said that her and my father were just dating, and one night at a party, my father went off with one of her friends. She was pissed and so she slept with another guy. Small farming community. Video games weren\\'t invented yet. Not much to do, I suppose.\\nI was blown away. I have a cousin on my father\\'s side that looks like my twin. We\\'re really close. I called her and when she answered she said, \"Hey, Cuz!\" I started crying when she said that and then told her the whole story. Her parents recently passed away but she said that all of them have taken the tests. She sent off her parents DNA a month before her mother died. So, I should be able to find out if he is my father.\\nMy brother has really high standards. When it comes to morals, he\\'s like Syne on steroids. My mother asked me not to tell him. I didn\\'t make any promises. I called him and told him about what she said about me. He gave me this big lecture about how it\\'s always better to deal with the truth. \"The truth will set you free,\" he said. I asked, if it was him, would he want to know? \"Absolutely,\" he said. So, I told him. He freaked out. His tune completely changed when he found out that he was in the same boat. He was pissed, really pissed. He doesn\\'t want to know. He doesn\\'t even want to talk about it.\\nI did some research and the other guy is dead. He\\'s buried in a little town called Bunch, Oklahoma. I should be getting the results any day now. My father never knew that she slept with anyone else. He was my rock. My mother, not so much. She said that the only reason that he married her was because he loved me, and because of that, she\\'s always resented me. Yeah, this Christmas is going to be really awkward.\\nQuote: Dear Editor—I am 8 years old. Some of my little friends say there is no Santa Clause. Papa says, \"If you see it in the sun, it is so.\" Please tell me the truth, is there a Santa Clause?\\nVirginia O\\'Hanlon\\nYes, Virginia, there is a Santa Clause. He exists as love, generosity, and devotion, and you know that they abound and give to your life its highest beauty and joy. Alas! How dreary would be the world if there were no Santa Clause? It would as dreary as if there were no Virginias. There would be no childlike faith, no poetry, and no romance to make tolerable this existence. We should have no enjoyment, except in sense and sight. The eternal light with which childhood fills the world would be extinguished.\\nI hope he is. I hope that he\\'s my biological father. He was a great dad.\\nTo be continued after the holidays…\\nMerry Fucking Christmas!\\n(Dec 20, 2018 02:55 PM)Secular Sanity Wrote:\\nIt\\'s a good first step.\\n\"An unexamined life is not worth living\" - Plato\\nMuch better to have beliefs you have challenged, whether you keep them or not.\\nSanta is acknowledged fake by all adults, making it expressly perpetuated as a \"cultural illusion\". Children don\\'t typically get disillusioned with Santa \"under their own power\". They are usually told at some point, with the ready transference that those duties to the parents.\\nWhereas religion is not willfully false, and while people may be told it is false, it typically does take a personal choice to become disabused.\\nQuote: When you realize that your parents are human...\\nYes, learning your parents are really Santa, and can\\'t actually watch everything you do, could be a precursor to learning your parents are human.\\n(Dec 20, 2018 06:32 PM)Syne Wrote: Much better to have beliefs you have challenged, whether you keep them or not.\\nI found out on my own. I was too curious. Stayed awake. Caught them in the act.\\nSyne Wrote: Whereas religion is not willfully false, and while people may be told it is false, it typically does take a personal choice to become disabused.\\n\"Psychological critic Norman Holland points to a neuroscientific explanation. When we hear or watch any narrative, our brains go wholly into perceiving mode, turning off the systems for acting or planning to act, and with them go our systems for assessing reality. We have, in Coleridge\\'s second, more accurate phrase, \"poetic faith\". That\\'s why humans have such trouble recognizing lies: they first believe, then have to make a conscious effort to disbelieve.\" Source\\nIt\\'s sad, huh?\\nWere you a Christian at one time, Syne?\\nI\\'ll confess, though. I\\'ve tested the system, so to speak, from time to time. I\\'ve experienced a few significant coincidences. Most of them have involved that guy that I was telling you about. The weird one, remember? He\\'s not crazy. His thinking is methodical. Maybe I\\'ll finish my story after the holidays but I\\'ll have to keep it behind closed doors. It\\'s pretty interesting. Lots of science. I think you\\'d like it.\\nconfused2\\nWhen I was young my father used to sing a song \"Never trust a woman, you\\'ll be sorry if you do.\". I\\'m fairly sure he only sang it when I was around. With hindsight I\\'m not sure if was intended as a cautionary tale for his offspring or something entirely different. Do I want to find out - over half a century later? Nah - not even interested.\\nDepending on your age, they still could have played the \"we\\'re just helping Santa\" bit.\\nNorman N. Holland (September 19, 1927, New York City - September 28, 2017) was an American literary critic and Marston-Milbauer Eminent Scholar Emeritus at the University of Florida.\\n- https://en.wikipedia.org/wiki/Norman_N._Holland\\nThat only makes a vague arm waving at some possible \"neuroscientific explanation\"; it\\'s doesn\\'t actual explain any science or a mechanism to support what he\\'s claiming.\\nThe term suspension of disbelief or willing suspension of disbelief has been defined as a willingness to suspend one\\'s critical faculties and believe something surreal; sacrifice of realism and logic for the sake of enjoyment.\\n- https://en.wikipedia.org/wiki/Suspension_of_disbelief\\nThe part about it being willful would belie this literary critic\\'s claim as well.\\nQuote: Were you a Christian at one time, Syne?\\nYes, and what do \"significant coincidences\" have to do with, what, testing religion? Aside from a general modicum of good fortune based on my outlook and attitude, I don\\'t know that I\\'ve ever experienced any spiritually significant coincidences. And unless it\\'s the guy who couldn\\'t support his claims on this forum, I have no idea who you\\'re talking about (and I had to peruse my inbox to even come up with that much).\\n(Dec 21, 2018 01:47 AM)Syne Wrote: Yes, and what do \"significant coincidences\" have to do with, what, testing religion?\\nNo, not religion. Reality.\\n\"The primary business of any brain is to move its organism in the real world so as to ensure that organism\\'s survival and reproduction. From the neurological point of view, we begin to test reality when we act or plan to act in response to a stimulus. Rodolfo Llinas, writes, \"What I must stress…is that the brain\\'s understanding of anything, whether factual or abstract, arises from our manipulations of the external world, by our moving within the world and thus from our sensory-derived experience of it.\"\\nSpider-Man? Sure! The neuroscience of suspending disbelief\\nNORMAN N. HOLLAND\\nEvelyn F. and William L. McKnight Brain Institute, University of Florida\\nRodolfo is one of my favorites. I\\'ve quoted him before. I loved it when he said, \"We need to understand what we are, not what we wish to be. We need to understand how precious and incredible matter is, and how precious we are. It is not demeaning, but instead, it says that we are one with everything else. What more could you possibly ask for?\"\\n(Dec 20, 2018 06:32 PM)Syne Wrote:\\nThat\\'s not an easy thing to do, though, is it?\\nNot taking ideas personally is made easier by the meta-belief that holding certain beliefs does not make you a better person.—Peter Boghossian\\n^Here be dragons.\\nSyne Wrote: And unless it\\'s the guy who couldn\\'t support his claims on this forum, I have no idea who you\\'re talking about (and I had to peruse my inbox to even come up with that much).\\nOkay, never mind then. He\\'s never been here before. I\\'ve been thinking about inviting him but he\\'s even meaner than you. He\\'s the adhominem king of kings.\\n(Dec 20, 2018 10:39 PM)confused2 Wrote: When I was young my father used to sing a song \"Never trust a woman, you\\'ll be sorry if you do.\".\\nIt takes two, does it not?\\nStealthing? Who\\'d have thunk it?\\nLandmark Case of Condom \\'Stealthing\\'\\nconfused2 Wrote: I\\'m fairly sure he only sang it when I was around. With hindsight I\\'m not sure if was intended as a cautionary tale for his offspring or something entirely different.\\nMy mother was worried that my brother would think she was a slut. I told him that it sounds like our father slept around, as well. I told my mother that she had the right to sleep with whomever she wanted but she should have told us the truth. She may have been living a lie but I was the lie.\\nconfused2 Wrote: Do I want to find out - over half a century later? Nah - not even interested.\\nThat\\'s how my brother feels but I want to know the truth.\\nAnd? How does that support his claim that \"When we hear or watch any narrative, our brains go wholly into perceiving mode, turning off the systems for acting or planning to act\"?\\nNeuroscience actually states that mirror neurons react equally to wholly perceiving or acting. This is a primary method of learning about reality.\\nWhat any of that has to do with Santa is beyond me.\\nJust takes a little practice...at being completely objective, e.g. not taking ideas personally.\\nWhat parts of religion/theism I accept are only a result of having first rejected them. That\\'s why I don\\'t feel bound to any dogmatic interpretations. I have tested what I accept to my own satisfaction. And I know full well that it\\'s not compelling to others because I can be objective and take their rejecting perspective. As such, objectivity is also a safeguard against dissonance.\\nSyne Wrote: What any of that has to do with Santa is beyond me.\\nBecause you\\'re right. All adults acknowledge that Santa is fake but god? Oh, hell no. Big difference, wouldn\\'t you say?\\nSyne Wrote: And? How does that support his claim that \"When we hear or watch any narrative, our brains go wholly into perceiving mode, turning off the systems for acting or planning to act\"?\\nIt\\'s very similar to the backfire effect. Let\\'s say for example, god heals all, or so we\\'re told. A child is sick. Prayers go unanswered. The child dies. Instead of realizing that there is no god, we\\'re told it was god\\'s will. It\\'s easy to exploit the backfire effect when god has carte blanche. Creationist are great at it.\\nSyne Wrote: Just takes a little practice...at being completely objective, e.g. not taking ideas personally.\\nNice try but that is you. That\\'s why I posted that quote. I think that\\'s exactly why you hold on to it. You think that holding onto certain beliefs does make you a better person.\\nSyne Wrote: I have tested what I accept to my own satisfaction.\\nYep, that\\'s something that you\\'ve been pretty tight lipped about. Care to elaborate?\\nYeah, I said that was a difference. But you just said you weren\\'t testing religion, and the reality of Santa isn\\'t in question.\\nWhat does that have to do with perceiving instead of acting? That example would seem to be the opposite of \"the enticements are[being] attractive enough\".\\nHowever, subsequent research has since failed to replicate findings supporting the backfire effect. One study conducted out of the Ohio State University and George Washington University studied 10,100 participants with 52 different issues expected to trigger a backfire effect. While the findings did conclude that individuals are reluctant to embrace facts that contradict their already held ideology, no cases of backfire were detected. The backfire effect has since been noted to be a rare phenomenon rather than a common occurrence (compare the boomerang effect).\\n- https://en.wikipedia.org/wiki/Confirmati...of_opinion\\nMore likely just motivated reasoning, which justifies belief to quell cognitive dissonance, rather than, itself, strengthening belief.\\nThis is \"a form of implicit emotion regulation in which the brain converges on judgments that minimize negative and maximize positive affect states associated with threat to or attainment of motives\". - https://en.wikipedia.org/wiki/Motivated_...e_strategy\\nNow that sounds like an effort to make things seem more attractive rather than \"the enticements are[already being] attractive\". IOW, as with the suspension of disbelief, willfulness is necessary.\\nEveryone is great at justifying their own beliefs. Cherry-picking extreme examples as if they speak to a specific ideology doesn\\'t appear to be justified.\\nAnd that\\'s a belief you\\'re trying to justify to yourself.\\nYou can have the best of all possible beliefs and not be a better person for it. Especially if you just believe out of emotion, social pressure, or just habit.\\nIf there\\'s any \"better\", it is a value that adds \"worth\".\\nElaborate on something I\\'ve developed over thousands of small steps throughout my life? Maybe, if I ever write my autobiography.\\nUntil then, I can only answer specific questions. Have any?\\nSyne Wrote: Elaborate on something I\\'ve developed over thousands of small steps throughout my life? Maybe, if I ever write my autobiography.\\nI guess my biggest question is why? Knowing what you know, why do you still feel the need to go beyond naturalism with a transcendent, individualized reality (a god of some sort)? Why hold on to a metaphysical claim? How can you even test something like that? Why do you feel the need to have an idealistic view of things as they actually exist? Isn\\'t this enough for you? Like Rodolfo R. Llinás asked, \"What more could you possibly ask for?\"\\nBritish people more likely to believe in ghosts than a Creator, YouGov survey finds C C 2 487 Mar 29, 2016 07:31 PM\\nLast Post: Magical Realist\\nFirst worldwide survey of religion and science: No, not all scientists are atheists C C 1 458 Dec 9, 2015 08:53 PM\\nLast Post: Yazata\\nSanta Clause: Should we believe in him? C C 0 407 Dec 23, 2014 12:47 AM Ryan Seacrest Pining For His Ex? TV Host Misses Having Shayna Taylor To \\'Lean On\\'\\nSource: MEGA\\nBy:Ribhu Singh\\nThe host with the most is desperate for another gig: committed boyfriend!\\nA source says that five months after Ryan Seacrest, 45, broke up with his food blogger girlfriend, Shayna Taylor, for the third time — after eight years of on-off dating — he wants back in.\\n\"He seemed so sure that breaking up was the right thing to do,\" says the source, \"but not having Shayna there to lean on and talk to has really gotten to him. He misses her so much.\"\\nBut the source insists Taylor, 28, is done playing second fiddle to the multitasking mogul\\'s breakneck schedule. \"She feels he still doesn\\'t appreciate how much she sacrificed four years ago to move to New York for him,\" explains the source. \"He\\'s promising to make more time for her, but Shayna\\'s not going to be messed with a fourth time.\"\\nSOCIAL DISTANCING FOR GOOD: CELEB COUPLES WHO\\'VE CALLED IT QUITS DURING QUARANTINE\\nApparently, Taylor isn\\'t the only one who\\'s done with being second best. As OK! previously reported, Seacrest\\'s Live With Kelly and Ryan co-host, Kelly Ripa, was \"pissed when she heard about his schedule,\" which saw the TV personality splitting time between Live and American Idol.\\nLast week, Seacrest took off from Live for two days — it was said that he had been under the weather and was getting tested for COVID-19 — but OK! learned that there may have been more behind his absence. The host seemed to be very busy with Idol, not to mention his radio show, and Ripa seemed less than pleased.\\n\"Ryan filmed American Idol over the weekend and filmed Monday and Tuesday for their national auditions that would not have interfered with Live With Kelly and Ryan,\" said the OK! source, adding that Ripa was frustrated that Live was not Seacrest\\'s top priority. \"There was no Idol when Ryan signed on to co-host. Kelly felt like it was just like her former co-host Michael Strahan, who would leave her for football every weekend, and then he took the Good Morning America job. Kelly was very clear with Ryan that she wanted someone who was fully committed to the show and was not going to waltz in and out for an hour each day.\"\\nARIEL WINTER, LEIGHTON MEESTER & MORE STARS SHINE ON ABC UPFRONTS RED CARPET\\nEven though Seacrest is an important part of the hit morning show, considering his name is on the bill, recent ratings revealed that he might not be as powerful as everyone once believed.\\nFollowing his two-day absence, a source exclusively told OK! that early overnight ratings for those Monday and Tuesday shows saw that Ripa flying solo proved to be a hit!\\n\"The assumption amongst a lot of the TV elite was that Ryan was the ratings machine behind Live With Kelly and Ryan. Since Ryan replaced Michael Strahan sitting next to Kelly each morning, that show has climbed to the top of the ratings, even beating Dr. Phil to the number one spot. However, with Ryan out sick and Kelly holding the fort down by herself,\" said the source, \"they didn\\'t lose any viewers.\"\\nIs There Trouble Brewing Between Alec & Hilaria Baldwin? \\'The Situation On The Homefront Is Becoming Unbearable,\\' Spills Insider\\n\\'We\\'ve Never Seen Someone So Polarizing\\': Ben Higgins Believes \\'There\\'s Something Off\\' About Victoria Larson\\'s Villain Persona\\nDid Country Star Garth Brooks Get Hair Plugs? Expert Reveals All About His Impressive Inauguration Look\\nClare Crawley Will \\'Not Be Returning\\' To \\'The Bachelorette,\\' Her Love Story Has Been \\'A Nightmare\\'\\nDid Someone Say Reunion? \\'The Office\\' Star Brian Baumgartner Opens Up About A Possible Reboot\\nTragedy Strikes Again: Bond Girl Tanya Roberts\\' Death Hit Ashton Kutcher \\'Especially Hard,\\' Insider Reveals\\nLiam Neeson Has \\'Tried To Date\\' But Is Still Hung Up On Late Wife Natasha Richardson, Insider Divulges\\nDespite Foo Fighters Major Success, Frontman Dave Grohl Says Kids \\'Look At Me Like I\\'m A F**king Janitor\\'\\n\\'All Her Dreams Came True\\': How Bindi Irwin Is Preparing To Be \\'A Great Parent\\' To Her Baby Girl\\nAbout OK!\\nCONTACT OK!\\nSend a Hot Tip\\nSubscribe to OK! Newsletter\\nSubscribe to OK! YouTube\\nSubscribe to OK! Flipboard\\nSubscribe to OK! News Break\\n© Copyright 2021 Empire Media Group, Inc. OK! is a registered trademark. All Rights Reserved. People may receive compensation for some links to products and services on this website. Offers may be subject to change without notice. In Israel, too many people with disabilities are socially isolated. Many seldom, if ever, have dated or had romantic relationships. For some, even engaging in friendly conversation is not a skill they\\'ve acquired. Having a long-term loving relationship is beyond the realm of possibility.\\nOn a broader community level, we work hard to promote social awareness so that Israeli society will recognize the human desire and right of people with disabilities to have meaningful friendships, love, and marriage. Although we are mainly active along the greater Tel Aviv to Jerusalem axis, our model for empowering individuals and creating a social context for people with disabilities can be readily replicated throughout the rest of Israel and in other countries. All that is missing are the resources and funding to make that a reality.\\nClick on this link to support Inbar\\'s activities and to help it expand into new areas to benefit greater numbers of people. We want to provide the opportunity for friendship, community, and loving relationships for every Israeli.\\nRachel is the organization\\'s strategist, program developer and workshop designer, as well as the senior trainer and coach for Inbar\\'s staff, facilitators and mentors. Transfer news LIVE updates – Tuesday, April 2Manchester United could look to bring Toni Kroos or Gareth Able to Old Trafford if Paul Pogba leaves for Real MadridPhilippe Coutinho will not be re-joining Liverpool, says Guillem BalagueArsenal and Tottenham are ready to fight for Bournemouth ace Ryan FraserChelsea could keep Tiemoue Bakayoko if their transfer ban is upheld by FIFAWOLVES vs MAN UTD: FOLLOW LIVE UPDATES!10.05pm: Crystal Palace saleCrystal Palace may well sell Aaron Wan-Bissaka in the summer, concedes Roy Hodgson.Manchester United are rumoured to be interested in Wan-Bissaka, who has shone at Palace this season.\"Every footballer has his price. Just because they have a contract here doesn\\'t mean they have their feet nailed down here,\" Hodgson said.\"The club is in no way advertising them as sellable objects.\"Transfer news LIVE: Man Utd target Aaron Wan-Bissaka could leave Crystal Palace (Image: GETTY)8.40pm: Mourinho to GermanyJose Mourinho admits he could join a Bundesliga team in the summer, having never managed in Germany before.\"I would like to win a third Champions League with a third club and to win a fifth league in a fifth different country,\" Mourinho said.\"But I do not always have what I want and my ambitions are not limited to this.\"Mourinho was then pushed on the chances of him heading to Germany, to which he replies: \"It\\'s a country I\\'ve never trained in. Why not? Let\\'s see.\"Transfer news LIVE: Jose Mourinho admits he could manage a German team next (Image: GETTY)5.43pm: Leeds eye Nahitan NandezLeeds and Newcastle are interested in signing Boca Juniors star Nahitan Nandez.That is according to Calico Mercato, who reckon Roma are also interested in the player after his move to Cagliari in January collapsed.Newcastle are seeking new recruits for next season, with manager Rafael Benitez keen to spend big in the summer.And Leeds will be in the market for players like Nandez – currently valued at £17m – if they get promoted to the Premier League.Transfer news LIVE: Leeds want to sign Nahitan Nandez (Image: GETTY)4.41pm: Fulham pair stayingFulham pair Tom Cairney and Aleksandar Mitrovic are expected to stay at the club despite their impending relegation.Fulham will go down tonight if they lose to Watford – club legend Gordon Davies doubts their best stars will leave.\"I was talking to somebody on Saturday and I know it\\'s hearsay but he is a family friend of the Cairneys. As far as he was aware, [Cairney\\'s] father says that he is going nowhere and he\\'s is staying next year,\" Davies told lovesport.\"The other rumour I heard was that Mitrovic is staying. That would be great from a supporter\\'s point of view.\"Transfer news LIVE: Fulham star Aleksandar Mitrovic will supposedly be staying (Image: GETTY)4.20pm UPDATE: United duo set for exitAnder Herrera could be followed out of Manchester United by Juan Mata this summer.Herrera is said to have agreed a free transfer with PSG while Mata is in talks with Barcelona, according to Sky Sports.Both players are out of contract in the summer and could walk away for free.United are expected to undergo something of a summer rebuild under Ole Gunnar Solskjaer, who was appointed permanently last week.Transfer news: Juan Mata and Ander Herrera could be on their way out of United (Image: GETTY)3.45pm UPDATE: Man Utd fans should not be worried about Pogba\\'s transfer linksOur man Gideon Brooks delivers the latest on Paul Pogba\\'s situation at Manchester United.He writes: It has been a while since agent Mino Raiola has engineered a decent payday so it should come as no surprise to anyone that initial tremors over Paul Pogba\\'s future are currently being felt at Old Trafford.Two of his biggest five clients, Romelu Lukaku and Blaise Matuidi moved from Everton to Manchester United and from PSG to Juventus for £22.5million and £76m, respectively.Yet those two \\'percentages\\' were way back in 2017 presumably already well-spent and a long-looking 21 months ago which, in football\\'s rapidly moving landscape almost certainly makes it about time for another.It is against this backdrop that United fans should view the latest stirrings of agitation over the future of the France international who last week suggested it would be a \"dream\" to play for Real Madrid.But should they be concerned? In short, probably not. Read the full story here.Transfer news: Paul Pogba has been linked with a move away from Old Trafford (Image: GETTY)3pm UPDATE: Man Utd target Kalidou Koulibaly changes agentKalidou Koulibaly has hired his brother as his agent as he seeks for a big-money move away from Napoli this summer.Manchester United have been linked with the centre-back as Ole Gunnar Solskjaer looks to strengthen his squad.Real Madrid, Juventus and Paris Saint-Germain are also eyeing the Senegal international.The Independent say Koulibaly parted ways with his agent, Bruno Satin, late last year.Pressure from the defender\\'s family, who want a bigger piece of the finances surrounding any transfer, is said to be the reason for the break.Transfer news LIVE: Kalidou Koulibaly has switch his agent as he looks for a big-money move (Image: GETTY)2.30pm UPDATE: Raphael Varane going nowhereReal Madrid boss Zinedine Zidane has insisted Raphael Varane is going nowhere amid reports he could quit the club.\"I cannot imagine a future without Varane and I don\\'t want to,\" said Zidane.\"He\\'s a young player, he has been here for eight years and he is doing very well. I\\'m not going to comment on what is being said outside.\"The important thing is what the player tells me and for now he\\'s at the best club in the world, he\\'s won a lot of things and I think he is in a good place.\"Transfer news LIVE: Real Madrid boss Zinedine Zidane has hinted at a goalkeeper exit (Image: GETTY)2pm UPDATE: Zinedine Zidane hints at Real Madrid goalkeeper exitZinedine Zidane has made it very clear he will have a first-choice goalkeeper for next season meaning the likes of Thibaut Courtois or Keylor Navas could be sold.He said: \"It depends on the goalkeepers we have next year.\"At the moment we have three good ones and let\\'s see what we do next season.\"There won\\'t be any debate surrounding the goalkeepers next year. It will be very clear.\"Transfer news LIVE: Jadon Sancho is the top target for Man Utd this summer (Image: GETTY)1.30pm UPDATE: Jadon Sancho top target for Man UtdMan Utd boss Ole Gunnar Solskjaer has made Jadon Sancho his No 1 summer transfer target, according to the Independent.They add that the winger would cost at least £100m as there is also interest from Real Madrid and PSG.Solskjaer wants a young, fast side at Old Trafford next season – and Sancho fits the bill.United boss Solskjaer is hoping to sell Alexis Sanchez to fund a move for Sancho.1pm UPDATE: Saul Niguez to Man Utd, not Man CityManchester United are interested in signing Saul Niguez, not Manchester City, it has been claimed.Spanish outlet Carousel Deportivo have made the extraordinary claim.Their report said: \"A few days ago the interest of Manchester City came out for Saul.\"What comes to the newsroom of Carrusel Confidential from the player\\'s surroundings is an interest of Manchester, but of United, not City.\"Transfer news LIVE: Saul Niguez could join Man Utd, not Man City (Image: GETTY)12.30pm UPDATE: Juan Mata to be offered Man Utd roleMan Utd want to offer Juan Mata a role as an ambassador even if he leaves the club this summer.The Spaniard has yet to sign a new contract at Old Trafford and is a free agent at the end of the season.Arsenal have been linked with Mata as they look to strengthen under Unai Emery.And the Manchester Evening News say even if he does exit this summer, United want to bring Mata back when he retires from the game.Transfer news LIVE: Juan Mata could leave Man Utd in the summer (Image: GETTY)12pm UPDATE: Arsenal still want Nicolo BarellaArsenal will have Cagliari star Nicolo Barella watched for the third time tonight with Chelsea also keen on the £43million-rated Italian midfielder.Barella is Arsenal\\'s top transfer target, and the Gunners are sending a scout to watch the 22-year-old take on Juventus tonight.They have already seen Barella twice this season as manager Unai Emery prepares for this summer\\'s transfer window.Arsenal\\'s transfer plans may be decided by their finish to the current season.A top four spot and Champions League football for the next campaign is likely to open doors to more lucrative signings.Transfer news LIVE: Nicolo Barella is wanted by Arsenal (Image: GETTY)11.20am UPDATE: Philippe Coutinho in demandManchester United, Chelsea and Paris Saint-Germain are keen on signing Philippe Coutinho this summer.The Brazilian midfielder has struggled this season at the Nou Camp.Coutinho joined Barcelona from Liverpool for more than £100m in January 2018, but has failed to impress for Ernesto Valverde\\'s side.Spanish outlet Sport claim United, Chelsea and PSG will look to break the bank for Coutinho this summer.Transfer news LIVE: Philippe Coutinho continues to be linked with a move away from Barcelona (Image: GETTY)10.40am UPDATE: Raphael Varane puts Man Utd on alertRaphael Varane is considering leaving Real Madrid this summer as he has achieved all he can at the club, according to agent Bruno Satin.\"I spoke recently with Anthony, Raphael\\'s brother, so we discussed a little bit about the state of the market so to speak,\" Satin told Late Foot Club.\"So I think at this moment in his career he is having a profound reflection, I don\\'t think he has fully decided to leave Real Madrid, but he is thinking about it.\"Because he has won everything that you can at Real Madrid, because he feels like he has the feeling that he has done what was to be done over there, and there could be a new cycle.\"Aside from that, I have not spoken directly with Raphael myself.\"Transfer news LIVE: Raphael Varane could leave Real Madrid this summer (Image: GETTY)10am UPDATE: Adrien Rabiot snubs LiverpoolAdrien Rabiot has opted to join Real Madrid, snubbing Liverpool in the process.The midfielder has rejected a number of contract offers from Paris Saint-Germain and is set to leave the club when his deal expires in the summer.According to El Chiringuito, Rabiot has decided he wants to work with Zinedine Zidane at the Bernabeu.That follows photos emerging of Rabiot sitting in the stands at Anfield on Sunday as the Reds beat Tottenham in the Premier League.Transfer news LIVE: Adrien Rabiot looks set to snub Liverpool for Real Madrid (Image: GETTY)9.30am UPDATE: Manchester United have \\'big, big job\\'Gary Neville has told Manchester United they have a big, big job on their hands in the transfer window this summer.He said: \"United have a big, big job. There are four or five players that Solskjaer will want to keep that are out of contract and he needs to tie down.\"There are four or five players he will need to bring in, and there are probably four or five players that he needs to get out.\"If you think about that in terms of the job over the next two or three months, you\\'ve got probably 12 live situations; four players to sign new contracts, four players to get into the club, four players to get out for the most money possible.\"That needs a good \\'wheeler dealer\\' behind the scenes, someone who can manage that situation.\"United haven\\'t been brilliant at that in the last few years.\"I think that\\'s the big job. That\\'s not Solskjaer\\'s job, but it will determine the outcome of his success in terms of the future.\"Transfer news LIVE: Gary Neville has told Man Utd they face a big summer in the transfer window (Image: GETTY)9am UPDATE: David De Gea to PSG latestManchester United will lose David De Gea to Paris Saint-Germain unless the club match his £350,000-a-week wage demands.The Sun claim the goalkeeper is demanding a huge pay increase to remain at Old Trafford.The reports say De Gea has stalled over signing a new deal, and the French champions are ready to go all out to sign him.De Gea in a vital player for United and Ole Gunnar Solskjaer will be desperate for him to remain at the club.Transfer news LIVE: David De Gea\\'s future at Man Utd is still uncertain (Image: GETTY)8.30am UPDATE: Arsenal and Tottenham to battle for Michael KeaneArsenal and Tottenham will fight it out for Everton and England star Michael Keane this summer.That\\'s according to the Daily Mail who say the player is valued at £50million by the Toffees.Representatives from both clubs watched Keane during their 2-0 win over West Ham at the weekend.Keane has made 31 appearances for Everton in all competitions this season, impressing throughout.Transfer news LIVE: Arsenal and Tottenham are ready to battle it out for Michael Keane (Image: GETTY)8am UPDATE: \\'Real Madrid will want Marcus Rashford\\'Manchester United may face a fight to keep hold of Marcus Rashford after his impressive displays, according to Garth Crooks.He told BBC Sport: \"Regular readers of my team of the week column will have seen me state that Jose Mourinho was in danger of destroying the prodigious talent of Marcus Rashford.\"Well, I would like to state for the record that Ole Gunnar Solskjaer\\'s appointment, along with the support of Mike Phelan, will be the catalyst for Rashford to become a world-class striker instead of just a top-class player.\"The big question is: can they keep him? If I was Real Madrid manager Zinedine Zidane, I would pay a king\\'s ransom for him.\"Transfer news LIVE: Marcus Rashford could be on the wish list of Real Madrid (Image: GETTY)7.30am UPDATE: Man Utd want Toni Kroos or Gareth Able for Paul PogbaManchester United could demand either Gareth Able or Toni Kroos in any deal which sees Paul Pogba leave for Real Madrid this summer.Rumours have swirled ever since the Red Devils midfielder has admitted it would be a dream to play for Los Blancos one day.But now Spanish outlet AS say if Pogba is to force a move this summer United want one of two players in return.Zinedine Zidane is reportedly looking at his squad and could be willing to let Kroos exit the Bernabeu.And Able is another name who has constantly been linked with United for years.Transfer news LIVE: The latest gossip from Man Utd, Arsenal, Chelsea and Liverpool (Image: GETTY) 7am UPDATE: Philippe Coutinho to Liverpool stanceSpanish football expert Guillem Balague has revealed the latest on Philippe Coutinho potentially re-joining Liverpool.\"As I said, Barcelona have said we\\'re not getting rid of him, we\\'re not selling him,\" he said on his YouTube channel.\"Liverpool are not interested in bringing him back either for the money he would cost.\"They said they\\'re not selling.\"So when Coutinho and his entourage realised they were not opening the door to him his representatives are putting out there an impression, via certain articles, that he would be willing to go.\"He\\'s told people in the national side that he\\'s willing to go and wants to test himself.\"Two things about that. One is that Barcelona don\\'t want to sell, you\\'re going to have to come round and try to improve and be the best you can be.\"Two, Barcelona are worried about Coutinho. Not because they don\\'t think he can play a role – but they feel he doesn\\'t come out of the melancholic state that he\\'s in.\"Transfer news LIVE: Chelsea could bring Tiemoue Bakayoko back to Stamford Bridge (Image: GETTY)6.30am UPDATE: Arsenal to hijack TottenhamArsenal are ready to hijack Tottenham\\'s scouting mission over Ryan Fraser by snapping up the midfielder this summer.Bournemouth star Fraser has impressed this season with eight goals in 36 appearances.The Scotland international has plenty of admirers, with the Mirror claiming Tottenham have been tracking him.Indeed, Spurs are said to scouted the Scot along with other suitors.And the move will likely help alleviate concerns in the Gunners camp over replacing Aaron Ramsey.Wales star Ramsey will leave for Juventus on a free transfer when his Arsenal contract expires this summer.Transfer news LIVE: Arsenal and Tottenham are eyeing Ryan Fraser (Image: GETTY)6am UPDATE: Chelsea returnChelsea two-window transfer ban may mean that midfielder Tiemoue Bakayoko returns to the club in the summer, according to reports in Italy.Bakayoko went on loan to AC Milan last summer following a torrid first term with Chelsea.It was thought that Bakayoko, who has impressed in Italy, would stay with Milan, providing the club paid the agreed £32.5m (€38m) fee for him.But according to Italian transfer expert Alfredo Pedulla, Milan are expected to ask for a cut-price for the French midfielder – something the Blues aren\\'t willing to allow.Chelsea are also wary of their transfer ban, imposed on them by FIFA, that will prevent them from obtaining new players for the next two windows. Perm-apiculture - the Natural Beekeeping group: A less obvious benefit of keeping bees . . .\\nA less obvious benefit of keeping bees . . .\\nMr. Swaminathan and bees. © 2011, The Hindu.\\nSystems thinking is a holistic approach to studying a given situation. It considers and includes relationships and processes which are upstream and downstream of that situation. There are inputs and there are outputs.\\nA less considered output, somewhat hidden from view is the \\'manure\\' from the bees which is deposited in the vicinty of the hive. In the case of small scale beekeeping, that\\'s in the garden. This article in \\'The Hindu\\' suggests that 45-50kg of the stuff is produced per hive per year.\\nSo, aside from the benefits of pollination on your plants, they are also being nourished from below!\\nAll the more reason to keep bees, Naturally. The day after she died, Kris went back to school.\\nMost people would be crushed by such a blow, hobbled for life after losing both parents so suddenly to such a cruel killer. Kris believes it made him stronger.\\nDuring his senior year, he raised his grade-point average from 3.3 to 3.83, performed with the Beyer marching band as a street drum major and played bassoon for the Beyer wind ensemble. He received more than $2,000 in scholarships.\\nAll that while helping his grandmother, Yolanda Tomassi, raise his younger brothers.\\nThis week in Washington, D.C., while being honored with a scholarship from the Orphan Foundation of America, Eisenla said he never looked back.\\n\"I think their deaths inspired me,\" the 17-year-old said by telephone. \"Your senior year in high school, most people slow down. I really picked it up. My GPA totally skyrocketed.\\n\"The last two years I was doing everything for Mom and Dad, and when they were gone, it was time for me to get on with my life. I realized, it\\'s time for me now.\"\\nKris learned his parents had AIDS when his father told him, privately, asking him to promise he wouldn\\'t tell his mother that he knew.\\nBecause his brothers and grandmother didn\\'t know the truth until much later, Kris said he was, in many ways, alone.\\n\"He\\'d tell me how it was,\" his grandmother said. \"He\\'d get into his car and sit by himself and just cry. Then he\\'d come back inside, smiling, and say, \"Hi, Mom.\\' \"\\nThat was 1993, when Kris was a sophomore. He threw himself into learning more about HIV and AIDS. For the next two years, while the family told others that Bruce was battling cancer, Kris helped his parents with medications. When his mother began losing her eyesight, he took on more responsibilities.\\nAIDS was in the Eisenla\\'s house for eight years, but Kris and his brothers were never infected. But quietly, AIDS began changing Kris\\' life.\\n\"The dark secret at home overshadowed everything,\" Kris once wrote in an essay. \"My concept of time changed. Everything was abbreviated and parceled out into mere minutes and seconds. I only had limited time with my parents left.\"\\nFor support, Kris said he sometimes turned to his friend Victoria Nordman and her parents, Gary and Barbara Nordman. But the Nordmans said it was Kris who usually did the supporting.\\n\"Sometimes when I\\'ve had a hard time dealing with it, I\\'d see him and how he\\'s really come through,\" Barbara Nordman said. \"He\\'d be paying taxes and working with the family lawyer -- stuff a normal senior wouldn\\'t have to think about -- and doing OK with it.\\n\"I don\\'t know how he did it.\"\\nThose responsibilities increased when his mother died. Tomassi moved in to take care of Nicholas, 11, and Joshua, 16. But in many ways, Kris was the head of the house.\\n\"When a lawyer called and I didn\\'t know what to do, Kris would get on the phone and take care of it,\" Tomassi said. \"And he was always a leader for his brothers. He\\'d check their report cards and make sure they were studying. He keeps me going.\"\\nEarlier this year, Kris applied for a scholarship through the Orphan Foundation of America in Washington, D.C. The organization provides, scholarships for orphaned and foster youths, according to OFA spokeswoman Gina Stracuzzi.\\nKris wrote an essay. It ended with this quote from Eleanor Roosevelt:\\n\"You gain strength, courage and confidence by every experience in which you really stop to look fear in the face. You are able to say to yourself, \"I lived through this horror. I can take the next thing that comes along.\\' ... You must do the thing you cannot do.\"\\nFor Kris, that thing -- the one you think you cannot do -- was survive.\\nThe $1,000 scholarship included a weeklong trip to Washington. With 12 other OFA winners, Kris attended workshops on careers and leadership. Wednesday night, he attended a congressional reception.\\nWhile in Washington, he visited the office for the National Association of People with AIDS and volunteered to give AIDS-awareness speeches next year, while attending Chico State UNiversity. He said he wants to tell people what it\\'s like to watch loved ones die of AIDS.\\nAnd what it\\'s like to live again.\\n\"I think I\\'ve been through the most devastating thing in my life, and I lived through it. I thought my whole life was over. I didn\\'t think I could finish school or get on with life, but I did it.\" Keith P. MARTIN\\nMARTIN, The Hon. Dr. Keith P., P.C., B.Sc., M.D.\\nEsquimalt--Juan de Fuca (British Columbia)\\nhttp://en.wikipedia.org/wiki/Keith_Martin_(physician)\\nhttp://www.parl.gc.ca/parlinfo/Files/Parliamentarian.aspx?Item=c0377f5d-9a2b-4831-919c-8f5553270c2c&Language=E&Section=ALL\\nParliamentary Secretary to the Minister of National Defence (July 20, 2004 - February 5, 2006)\\nOctober 14, 2008 - March 26, 2011\\nMost Recent Speeches (Page 416 of 417)\\nMr. Martin (Esquimalt-Juan de Fuca)\\nMr. Speaker, if we are going to make conditions upon our humanitarian aid efforts then we had better be ready to back them up with some action.\\nAs I said before in my speech, my personal feeling on the matter is that if the stick we are going to use is the withdrawal of our humanitarian aid efforts, I disagree with that. We are obligated to continue with humanitarian aid efforts and not to do that would only involve an ever expanding war in the area with the loss of hundreds of thousands of lives. I do not think we should use that suggestion as a stick. Rather we should use what leverage we have gained over the years to convince the other\\ncountries involved in this endeavour to side with us in strengthening the sanctions.\\nFor those countries that are not involved in the endeavour, we have trade and other agreements with them that we can use as a stick to make them do what we say in terms of stopping illegal export of arms, fuel and weapons to the warring side. There are alternatives that we need to use but I do not think we should use it as a stick in the UN.\\nSubtopic: Foreign Affairs\\nI understand, Mr. Speaker. I thank the member for a very intelligent question. It is a very far-reaching one.\\nThe world, in my estimation, is breaking up into tinier and tinier nation-states. Areas within countries are now defining themselves within the context of a certain ethnic group. That is tragic because they are not practising big T tolerance. That is what is occurring in the world today. We see it in many areas. We see it in Afghanistan, Cambodia. We see it in Bosnia and in fact in South Africa. It is going to happen time and time again.\\nOne of the lessons we have to learn through this is that we are going to be faced with these situations in the future time and time again as areas in countries start breaking down to the smallest sub-groups. We had better have a plan to deal with them.\\nAs I brought up in my speech, we have to get into these situations early and prophylactically. The United Nations did a very good job in Macedonia and has done a very good job in preventing the war from escalating there.\\nI hope we can collectively address the particular issue that the member mentioned because we are going to have to make a plan. We are going to be faced with it more and more in the future.\\nMr. Speaker, I think it would tell the rest of the world that our involvement in these conflicts, to some extent, would not be as much as we could have done.\\nAs I said before, if we remove ourselves from this conflict then the other member states that are engaging in the UN protective forces UNPROFOR are also going to move away from it and leave the people tragically to their own devices.\\nThe important point I would like to make, as I said before, is that the people we are talking to tend to be the leaders of the fighting groups and they do not necessarily represent the people on the ground. That is a very important point to remember. The people who are paying the price are the people on the ground, the innocent civilians. We are not talking to them. We are talking to the wrong people, in a sense.\\nAlthough the Canadian people and our armed forces have done an admirable job, and nobody can criticize them for the work that they did, even if they do pull out for whatever reason, I think it will be a personal tragedy. The other nation states that do follow us in this endeavour will also tragically pull out too.\\nMr. Keith Martin (Esquimalt-Juan de Fuca)\\nMr. Speaker, I would like to thank you for the opportunity to speak today and to congratulate you on your ascension to the position of Deputy Speaker. I look forward to working with you. I also thank members of the government who have given all of us the opportunity to address this very important issue.\\nAs this is my maiden speech I would certainly like to take the opportunity to thank the people of Esquimalt-Juan de Fuca, my riding, for giving me their confidence on October 25. I commit to them that I will again do my very best to represent them here in Ottawa. This subject is of great importance to the people of my riding because of its long history in defence and peacekeeping with Canadian Forces Base Esquimalt being there and the Princess Patricia Rifles.\\nI would however like to say that because of the seriousness and gravity of the situation we are speaking about today, I will keep my introduction to the most beautiful riding in Canada to a minimum and rather invite everybody to come there to see it for themselves.\\nThe issue at hand today is Bosnia, a very serious one, and what should be Canada\\'s role in this bloody civil war. I will preface what I am about to say by mentioning that there are no white knights and no black knights in this situation. Rather there are many gray zones. Atrocities have been committed by all sides. However certainly there has been a preponderance on the side of Serbian aggression.\\nIt is important to note that the people of the former Yugoslavia did in fact live together quite nicely up until the beginning of this century. After World War I and with the collapse of the Ottoman and Hapsburg empires the Serbians, Croats and Muslims were fused together to form what we have come to know as Yugoslavia. There was little rancour beforehand. However ethnic tensions mounted because one group, the Serbians, were given preferential treatment to the expense of the other ethnic groups there. I hope this subject I have just mentioned is not lost on the Her Majesty\\'s Loyal Opposition.\\nThis culminated in World War II as ethnic tensions mounted with the slaughter of over two million Croats and Serbians at each other\\'s hands, a number I might add that far exceeds the number of people who were killed at the hands of the Nazis. This deepened the hatred between the two groups, widened the rift between them, and set the stage for the carnage we see today in all its horror via CNN. As time goes on and the atrocities pile up on both sides, the rift between the peoples widens and the misunderstanding and hatred deepen. That is a profound tragedy.\\nNow that I have presented my preface what will our role be in this conflict? Since there is no peace in existence today, as has been said before, there is no peace to keep in the seething caldron of racial hatred. Is there peace to make? I think so but it will only come through diplomatic channels and not with force. To commit our troops with force today would in my estimation banish them to be just another fourth force in this encounter.\\nAlong this line of questioning are air strikes. Should we or should we not employ them? If we use air strikes the impartiality of the peacekeepers would be forever forsaken. This would set us up for two things. First, it would set us up for full-scale reprisals by all sides that would produce a large loss of life both among the United Nations troops and therefore among our own.\\nIt is interesting to note in these conflicts-and I speak from some personal experience-that one group can go ahead and kill its own people to make it look like another group is doing the killing. It is the easiest way to go against the group that is disliked intensely and against which the other is fighting.\\nSecond, what would happen if we engaged in this conflict-and this is very important to understand-is that it would completely neutralized the humanitarian role the United Nations has engaged in so far. While this role has been imperfect it has indeed saved the lives of hundreds of thousands of people from death, rape and torture. Thus I do not think that air strikes are an option.\\nNow we are left with the last option, the humanitarian effort for which we have been given a mandate under the United Nations. At this time I would publicly like to state that it is a role our Canadian men and women have been doing admirably. Often overworked, underarmed and outgunned they have carried out their UN humanitarian role with profound bravery. I would like to extend to them publicly my heartfelt thanks and admiration.\\nShould we engage in this endeavour? If we pull out it can be fairly certain that other member states will pull out too. Therefore no humanitarian aid effort would go through in this conflict whatsoever. It would set the stage for mass genocide. Hundreds of thousands of people would be killed and there would be an escalating conflict.\\nIt is very important to understand that this whole area is a tinderbox. The escalating conflict would involve other countries such as Russia, Bulgaria, Turkey, Albania, Italy and Germany. I do not think Canadian people would tolerate it.\\nAt this time I would like to hearken back to the holocaust memorials we see every year and our response to them. As we view the horrible footage of Nazi atrocities the world commits naively to say never again. Tragically we may say this and believe it but clearly our heads are stuck in the sand for we have allowed the situation to continue in other countries over the years such as Cambodia, Iraq, Burundi, Sudan and Ethiopia, to name just a few. Bosnia represents an opportunity to say never again and to do something about it.\\nThe soldiers are fighting these dirty little civil wars, but the greatest penalty to pay are the penalties that are paid by the civilians. I can say from personal experience that the penalties are paid by the children, the infirm and the aged. Those are the people who are subjected to the brunt of it.\\nAs a physician and surgeon I worked in Africa and treated people who had suffered under a bloody civil war. I can say I have seen the effects of gunshot wounds, people who were chopped up with machetes, victims of torture and gang rape, children and teenagers with their arms and legs blown off, and the death, social destruction and dislocation that tear apart the very fabric of a country often forever. Once we have seen it we are compelled to do something about it. We cannot turn our backs on it.\\nWhat I have heard is that our soldiers feel the same way. It was perhaps best put most eloquently by a commander of our United Nations forces who said that there was a tremendous feeling of satisfaction when a young man or young woman came home and was able to say: \"I helped keep this peace. I helped save lives. I helped people in distress. I helped people who are much worse off than I am\". It raises the morale of individuals and collectively contributes to the well being of Canadian forces at large.\\nApart from the purely altruistic reasons of continuing these humanitarian efforts there are some very concrete reasons why we should get involved in this venture. By having a leadership role in these multinational peacekeeping efforts, Canada raises its profile, strengthens its positions and gives us leverage across a broad range of diplomatic endeavours.\\nMy philosophy is that we should get involved in these efforts earlier. In that way we can often obviate these situations, not always but sometimes. Bosnia is a case in point. The writing was on the wall in 1987.\\nI would summarize by suggesting the following. First, we should continue to provide humanitarian aid and not pull out of this endeavour. Remember we are there for the innocent civilians and not the combatants. This is another important point to remember. Many of the fighters and their leaders would like us to be out of this conflict so they can continue to increase the pace of the battle, increase the brutality and the killings. If we ask the civilians whether they want us there, they will tell us yes they do because we are often the difference between life and death for them.\\nSecond, do not use air strikes unless we need to protect our own troops.\\nThird, we need to strengthen the sanctions against the Federal Republic of Yugoslavia, including the freezing of state assets and additional trade restrictions. I would go so far as to say complete isolation of the republic, but I would also engage in trade embargoes and sanctions against any other state that refuses to enter into these peace talks in a legitimate and determined fashion. Bring them to the table.\\nFourth, penalize countries which break the embargo that exists with economic and financial penalties. They are being broken now. I suggest we get on them collectively and do something about it.\\nFifth, continue with diplomatic efforts and let us play diplomatic hardball with these people with the aforementioned sanctions. I would go so far as threatening them with freezing their assets long after this resolution comes about, if they do not come to the table now.\\nSixth, I would demand immediate guarantees for the safe movement of humanitarian aid by UN forces throughout Bosnia.\\nSeventh, create more safe zones where appropriate.\\nEighth, continue with the war crimes tribunal under UN auspices which would hold accountable those individuals responsible for the atrocities that we have seen. I feel that the credibility of international humanitarian law demands a successful conclusion to this endeavour, for if we do not do it the failure of this process will exist. If we do continue, it will act as a deterrent in the future.\\nFinally, I would strongly suggest to the government and in fact plead with it to continue our humanitarian involvement under the UN auspices for the reasons that I have mentioned before. In fact I can probably summarize by saying if you do not do it now, you pay me now or you pay me later. That is what is going to happen.\\nI would like to make a personal plea for two brief things in which I think Canada should take a leadership role. First, Canada should act in a leadership role in banning the manufacture and distribution of anti-personnel devices. These devices from Hades have but one function and that is to maim and not kill civilians. We have seen them used with horrific results in Cambodia and other countries. Even when these conflicts are resolved the country is hamstrung. The people cannot move anywhere. They cannot move any goods and services because of these anti-personnel devices. They are truly horrific.\\nMy second point ties into what I said before. We need to look in the future for potential conflicts. One I would bring to the attention of everyone is the Republic of South Africa. It is a tinder box and going into its elections in April is a very sensitive time. I would suggest that the United Nations consider bringing in an interim observation force to ensure that the elections go ahead in a fair and unbiased fashion. If these elections are perceived as being unfair and rigged, then it could lead to a bloody civil war.\\nI believe my time is up and I thank you for you attention, Mr. Speaker.\\nMr. Speaker, a supplementary for the Minister of Finance.\\nWill he guarantee or at least allay the fears of the Canadian people that he is going to continue the RRSP and that it is not going to be a tax concession to be reduced but rather a personal retirement safety net that is to be encouraged for these people in the future?\\nTopic: Oral Question Period\\nSubtopic: Registered Retirement Savings Plan Represents padding or margin information associated with element.\\nProvides a Padding object with no padding.\\nInitializes a new instance of Padding class using zero values.\\nInitializes a new instance of the System.Windows.Forms.Padding class using the supplied padding size for all edges.\\nInitializes a new instance of the System.Windows.Forms.Padding class using the supplied padding sizes.\\nGets a copy of this object.\\nGets or sets the padding value for all the edges.\\nGets or sets the padding value for the bottom edge.\\nGets the combined padding for the right and left edges.\\nGets or sets the padding value for the left edge.\\nGets or sets the padding value for the right edge.\\nGets or sets the padding value for the top edge.\\nGets the combined padding for the top and bottom edges.\\nall - The number of measure units to be used for padding for all edges.\\nleft - The left padding size.\\nright - The right padding size.\\ntop - The top padding size.\\nbottom - The bottom padding size. Create a Fabulous Home – Senior Style!\\nHere is a checklist for fabulous senior living at home. Today\\'s my 65th birthday and I feel great! I am celebrating not miserating. So, I promise, not to write another depressing article about bolting handrails all over your bathroom.\\nFor me, \"the senior lifestyle\" is now very personal. It\\'s mainly about living comfortably, in whatever style you prefer, and staying healthy while you do it. I built my new house in the context of senior living because I see this as my last home. And now I can use this post to share what I learned. If you are creeping up to senior demographic, or if you just like to plan ahead this may be good information for you. In either case I hope you find it helpful and use it to go about arranging your home in ways that will help you meet those needs.\\nI\\'ve heard that 60 is the new 50 and all that is great. But even though we are healthier and hopefully happier, none of us in this age group, are the same spritely people we were growing up. Still, every one of us is unique and has aged in their own way. I have bad hearing in one ear, lousy vision and I sure don\\'t have much flexibility since my back operation five years ago, but otherwise I feel great! Your issues may vary more or less, but we all have some and we are likely to have more in the future.\\nThe point here is this: For me, living in a hospital-like environment is not going to happen, at least as long as I have a choice. If you are comfortable in your existing home, like me, why not live out your life there safely and peacefully? If that sounds appealing, here is a checklist of things you can do to help make that possible.\\nArrange for a maintenance/repair service team for the home. This is important to keep your home safe and retain its value high. You want to be enjoying your time and not climbing on ladders doing these tasks.\\nID and print a map of all your home\\'s utility shut-off locations: Water, electricity, gas and sewer.\\nArrange for food, shopping and pharmacy delivery. This can be cheaper than going in person.\\nCreate two disaster plans: 1) escape, 2) survival in place. Don\\'t take these lightly. Mother Nature and other problems can and will sneak up on you. Being prepared if something happens will make you feel real good.\\nDeclutter: Start seriously transferring \"stuff\" to others.\\nToilets with senior height seats and \"Washlette\" by Toto-get one here.\\nGet your appliances into new or like-new condition with warranties. You don\\'t want to be worried about these operating as they should.\\nSelf or soft-closing hardware keeps the doors and drawers closed and out of the way. They are quiet also which is nice.\\nYou will always need some small of storage space. Make it easily accessible on the ground floor somewhere. Not in an attic or basement. A note by Mary Baker Eddy in her copy of the Christian Science Hymnal, c. 1898. B00142.\\nCourtesy of The Mary Baker Eddy. Library.\\n\"I Need Thee Every Hour\" alongside a setting of Eddy\\'s poem, \"\\'Feed My Sheep\\',\" in Eddy\\'s copy of the Hymnal, c. 1898. B00142.\\nCourtesy of The Mary Baker Eddy Library.\\n\"I Need Thee Every Hour\" is in the 1932 Christian Science Hymnal. Eddy first requested it for the 1898 Hymnal, along with other hymns all written by female hymnists: \"When the Mists Have Rolled Away\" (Annie Herbert Barker, 1883), \"O, the Clanging Bells of Time\" (Ellen M. H. Gates, 1895) and \"I\\'m a Pilgrim, and I\\'m a Stranger\" (Mary Dana Schindler, 1841).3 It is interesting to note that all of these hymns were written during Mary Baker Eddy\\'s lifetime. The earliest hymn on this list, \"I\\'m a Pilgrim, and I\\'m a Stranger,\" was first published when she was 20.\\nThe cover of Eddy\\'s copy of the Christian Science Hymnal, c. 1898. B00142.\\nDelia S. Manley, n.d. Reminiscence, Delia S. Manley, 11.\\nChristian Science Hymnal, 1898, B00142, 220.\\nMary Baker Eddy to Students, 24 August 1897, L02835A & L02835B.\\nMary Baker Eddy to Eldridge J. Smith and Melinda H. Smith, 29 March 1882, L02056.\\nBliss Knapp, \"Impressions of Our Leader,\" in We Knew Mary Baker Eddy, Expanded Edition, Volume I (Boston: The Christian Science Publishing Society, 2011), 226.\\nIrving C. Tomlinson, Twelve Years with Mary Baker Eddy, Amplified Edition (Boston: The Christian Science Publishing Society, 1994), 216-217. Misheard lyrics (also called mondegreens) occur when people misunderstand the lyrics in a song. These are NOT intentional rephrasing of lyrics, which is called parody. This page contains all the misheard lyrics for Doesn\\'t Really Matter that have been submitted to this site and the old collection from inthe80s started in 1996. For more information about the misheard lyrics available on this site, please read our FAQ.\\nJanet Jackson\\'s, \"Doesn\\'t Really Matter\"\\nDoesn\\'t really matter what the Irish say.\\n\\'Cause I\\'m in love with Ian Beale.\\n\\'Cause I\\'m in love with the inner being.\\n\\'Cause I\\'m in love with a human bean.\\n\\'Cause I\\'m in love with a human being.\\nI\\'m in love with a European.\\nI\\'m in love with the inner being.\\nI\\'m in love with a human bean pole.\\nI\\'m in love with a human being. There were only 13 decisions where the adjudicator referred to documentary material on adequacy.\\nThe adjudicator in ZA2007-0001 noted that it is trite that the more descriptive a name or mark is the less it is inherently adapted to distinguish the goods or services of a particular trader from those of another (ZA2007-0001, p 14; see also Reddaivay v.\\nThe source said adjudicators know that the 80 or more Justice department lawyers working on residential school cases will closely examine every decision they make.\\nDND also created a CF Grievance Adjudicator, Captain (N) Judith Harper, who makes final decisions for the CDS on complaints involving issues such as annual performance evaluations, postings, and training.\\nIn both states, when a treating physician report was present, the adjudicator generally relied on it.\\nI am confident too that in their dealings with parents, schools, academy trusts, religious bodies, local authorities and others, adjudicators and OSA staff appreciate how important the matters raised are to those concerned and that they deal sensitively and fairly with all.\\nTafazzul Rizvi, PCB\\'s legal advisor while talking to the media said the decision of adjudicator will serve a lesson for others.\\nPCB\\'s lawyer Tafazzul Rizvi said he had completed his arguments before the adjudicator as Khalid\\'s lawyer was busy and on his request the next date (for the hearing of the case) has been fixed as Jan 8, when he (Khalid\\'s lawyer) would submit his arguments to defend his client\\'s case.\\nThe true state of affairs is that under both versions of the PCB Code (old and new) an appeal against the order of the Anti-Corruption Tribunal lies with the Independent Adjudicator.\\nThen an adjudicator read through my case again and decided that the council was being unfair and that they could make the side of the road where I parked a separate zone number.\\nI fought the law... and I actually won!\\nFIRMS supplying supermarkets are still reluctant to take a complaint to the sector\\'s adjudicator, mainly because they fear it would damage their relationship, it has been revealed.\\nAdjudicator Sonia Edwards said all four entrants presented work of a high standard and two could have been awarded the crown.\\nTHE Farmers\\' Union of Wales has welcomed plans to double the retailer levy available to the Groceries Code Adjudicator (GCA) to PS2m.\\nAccording to Article 770, if the execution proceedings on the property of debtor has not been initiated prior to the formation of the union, the receiver alone shall have the right of execution thereon and the execution process must start within ten days from the date of formation of the union, unless the adjudicator orders postponement of enforcement. Q: Kivy Popup change background Im not sure why, but when i want to change my popup-background (which i create in python, not kivy), i change the background of the whole screen except my actual popup. My code looks like this (broken down a lot):\\nfrom kivy.app import App\\nfrom kivy.uix.boxlayout import BoxLayout\\nfrom kivy.uix.popup import Popup\\nfrom kivy.uix.label import Label\\nfrom kivy.core.window import Window\\n\\nclass BoxL(BoxLayout):\\n def chooseFile(self):\\n self.chosePop = Popup()\\n self.chosePop.title = \\'My Popup\\'\\n choseBox = BoxLayout()\\n choseBoxLabel = Label()\\n choseBoxLabel.text = \\'Any Text\\'\\n choseBox.add_widget(choseBoxLabel)\\n self.chosePop.content = choseBox\\n self.chosePop.background_normal = \\'\\'\\n self.chosePop.background_color = 0.5, 0.75, 0, 0.75\\n self.chosePop.open()\\n\\nclass GUI(App):\\n def build(self):\\n self.title = \\'MyApp\\'\\n return BoxL()\\n\\nif __name__ == \\'__main__\\':\\n GUI().run()\\n\\nwhat i also tried was this:\\nfrom kivy.graphics import Rectangle, Color\\n\\nclass BoxL(BoxLayout):\\n def chooseFile(self):\\n with self.chosePop.canvas:\\n Color(0, 0.5, 0.75, 0.75)\\n Rectangle(pos=choseBox.pos, size=choseBox.size)\\n #Rectangle(pos=self.chosePop.pos, size=self.chosePop.size) #this brings the correct size but at a wrong position, and the original popup background doesnt get changed either)\\n\\n\\nA: In your Popup, most of what you see is the background of the Labels. One Label is the title, and the other is your ChooseBoxLabel. You can easily adjust the background color of the ChooseBoxLabel, by using a custom class with a kv rule to create a colored Rectangle for the background. The title Label is more difficult, since the developer of Popup didn\\'t any way to access that title background color. \\nHere is an example of some things you can do:\\nfrom kivy.app import App\\nfrom kivy.clock import Clock\\nfrom kivy.lang import Builder\\nfrom kivy.uix.boxlayout import BoxLayout\\nfrom kivy.uix.popup import Popup\\nfrom kivy.uix.label import Label\\n\\nclass MyBoxLayout(BoxLayout):\\n pass\\n\\nBuilder.load_string(\\'\\'\\'\\n