Skip to content

Commit a67091a

Browse files
committed
Merge branch 'main' into pp_ddp
Signed-off-by: Mamta Singh <[email protected]>
2 parents 95efa6e + 50b1404 commit a67091a

File tree

9 files changed

+38
-95
lines changed

9 files changed

+38
-95
lines changed

QEfficient/cloud/finetune.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
)
2929
from QEfficient.finetune.utils.dataset_utils import get_dataloader
3030
from QEfficient.finetune.utils.device_map import get_device_map
31-
from QEfficient.finetune.utils.helper import get_longest_seq_length, print_model_size, print_trainable_parameters
31+
from QEfficient.finetune.utils.helper import get_longest_seq_length
3232
from QEfficient.finetune.utils.logging_utils import logger
3333
from QEfficient.finetune.utils.parser import get_finetune_parser
34-
from QEfficient.finetune.utils.train_utils import train
34+
from QEfficient.finetune.utils.train_utils import print_model_size, print_trainable_parameters, train
3535
from QEfficient.utils._utils import hf_download
3636

3737
# Try importing QAIC-specific module, proceed without it if unavailable
@@ -85,7 +85,7 @@ def setup_seeds(seed: int) -> None:
8585
Notes:
8686
- Sets seeds for PyTorch, Python's random module, and NumPy.
8787
"""
88-
# torch.use_deterministic_algorithms(True)
88+
torch.use_deterministic_algorithms(True)
8989
torch.manual_seed(seed)
9090
random.seed(seed)
9191
np.random.seed(seed)
@@ -114,7 +114,10 @@ def load_model_and_tokenizer(
114114
- Sets pad_token_id to eos_token_id if not defined in the tokenizer.
115115
"""
116116
logger.log_rank_zero(f"Loading HuggingFace model for {train_config.model_name}")
117-
pretrained_model_path = hf_download(train_config.model_name)
117+
pretrained_model_path = hf_download(
118+
train_config.model_name,
119+
ignore_patterns=["*.txt", "*.onnx", "*.ot", "*.md", "*.tflite", "*.pdf", "*.msgpack", "*.h5", "*.pth"],
120+
)
118121
if train_config.task_type == "seq_classification":
119122
model = AutoModelForSequenceClassification.from_pretrained(
120123
pretrained_model_path,

QEfficient/finetune/configs/dataset_config.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,6 @@
88
from dataclasses import dataclass
99

1010

11-
@dataclass
12-
class samsum_dataset:
13-
dataset: str = "samsum_dataset"
14-
train_split: str = "train"
15-
test_split: str = "validation"
16-
17-
1811
@dataclass
1912
class grammar_dataset:
2013
dataset: str = "grammar_dataset"

QEfficient/finetune/configs/training.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ class TrainConfig:
3434
weight_decay (float): Weight decay for optimizer (default: 0.0).
3535
gamma (float): Learning rate decay factor (default: 0.85).
3636
seed (int): Random seed for reproducibility (default: 42).
37-
dataset (str): Dataset name for training (default: "samsum_dataset").
37+
dataset (str): Dataset name for training (default: "alpaca_dataset").
3838
task_type (str): Type of task for which the finetuning is to be done. Options: "generation" and "seq_classification". (default: "generation")
3939
use_peft (bool): Whether to use PEFT (default: True).
4040
peft_method (str): Parameter-efficient fine-tuning method (default: "lora").
4141
from_peft_checkpoint (str): Path to PEFT checkpoint (default: "").
42-
output_dir (str): Directory to save outputs (default: "meta-llama-samsum").
42+
output_dir (str): Directory to save outputs (default: "training_results").
4343
save_model (bool): Save the trained model (default: True).
4444
save_metrics (bool): Save training metrics (default: True).
4545
intermediate_step_save (int): Steps between intermediate saves (default: 1000).

QEfficient/finetune/dataset/dataset_config.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,10 @@
2121
from QEfficient.finetune.dataset.imdb_dataset import (
2222
get_preprocessed_imdb as get_imdb_dataset,
2323
)
24-
from QEfficient.finetune.dataset.samsum_dataset import (
25-
get_preprocessed_samsum as get_samsum_dataset,
26-
)
2724

2825
DATASET_PREPROC = {
2926
"alpaca_dataset": partial(get_alpaca_dataset),
3027
"grammar_dataset": get_grammar_dataset,
31-
"samsum_dataset": get_samsum_dataset,
3228
"gsm8k_dataset": get_gsm8k_dataset,
3329
"custom_dataset": get_custom_dataset,
3430
"imdb_dataset": get_imdb_dataset,

QEfficient/finetune/dataset/samsum_dataset.py

Lines changed: 0 additions & 48 deletions
This file was deleted.

QEfficient/finetune/utils/helper.py

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212

1313
import torch
1414

15-
from QEfficient.finetune.utils.logging_utils import logger
16-
1715
try:
1816
import torch_qaic.debug as qaic_debug # noqa: F401
1917
except ImportError as e:
@@ -73,30 +71,6 @@ def get_longest_seq_length(data: List[Dict]) -> Tuple[int, int]:
7371
return longest_seq_length, longest_seq_ix
7472

7573

76-
def print_model_size(model) -> None:
77-
"""
78-
Print the number of trainable parameters.
79-
80-
Args:
81-
model: PyTorch model.
82-
"""
83-
total_params = sum(p.numel() for p in model.parameters() if p.requires_grad)
84-
logger.log_rank_zero(f"Model has {total_params / 1e6} Million params.")
85-
86-
87-
def print_trainable_parameters(model) -> None:
88-
"""
89-
Print the number of trainable parameters, all params and percentage of trainable params.
90-
91-
Args:
92-
model: The PyTorch model.
93-
"""
94-
trainable_params, all_param = model.get_nb_trainable_parameters()
95-
logger.log_rank_zero(
96-
f"Trainable params: {trainable_params:,d} || all params: {all_param:,d} || trainable%: {100 * trainable_params / all_param:.4f}"
97-
)
98-
99-
10074
def save_to_json(
10175
output_filename,
10276
train_step_loss,

QEfficient/finetune/utils/train_utils.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,13 @@ def train(
202202

203203
total_loss += loss.detach().float()
204204
if is_rank_zero():
205+
tensorboard_updates.add_scalars("loss", {"train": loss}, total_train_steps)
205206
if loss <= train_config.convergence_loss:
206207
loss_0_counter += 1
207208
else:
208209
loss_0_counter = torch.tensor([0]).to(device)
209210
if train_config.enable_ddp:
210211
dist.broadcast(loss_0_counter, src=0)
211-
if is_rank_zero():
212-
tensorboard_updates.add_scalars("loss", {"train": loss}, total_train_steps)
213212

214213
if train_config.save_metrics:
215214
train_step_loss.append(loss.detach().float().item())
@@ -451,3 +450,25 @@ def evaluation(model, train_config, eval_dataloader, device):
451450
logger.log_rank_zero(f"{eval_metric.detach().cpu()=} {eval_epoch_loss.detach().cpu()=}")
452451

453452
return eval_epoch_loss, eval_metric, val_step_loss, val_step_metric
453+
454+
455+
def print_model_size(model) -> None:
456+
"""
457+
Print model name, the number of trainable parameters and initialization time.
458+
Args:
459+
model: PyTorch model.
460+
"""
461+
total_params = sum(p.numel() for p in model.parameters() if p.requires_grad)
462+
logger.log_rank_zero(f"Model has {total_params / 1e6} Million params.")
463+
464+
465+
def print_trainable_parameters(model) -> None:
466+
"""
467+
Print the number of trainable parameters, all params and percentage of trainablke params.
468+
Args:
469+
model: The PyTorch model.
470+
"""
471+
trainable_params, all_param = model.get_nb_trainable_parameters()
472+
logger.log_rank_zero(
473+
f"Trainable params: {trainable_params:,d} || all params: {all_param:,d} || trainable%: {100 * trainable_params / all_param:.4f}"
474+
)

QEfficient/transformers/models/falcon/modeling_falcon.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,11 @@ def forward(
183183
):
184184
residual = hidden_states
185185

186-
attention_layernorm_out = self.input_layernorm(hidden_states)
186+
if self.config.new_decoder_architecture:
187+
attention_layernorm_out = self.ln_attn(hidden_states)
188+
mlp_layernorm_out = self.ln_mlp(hidden_states)
189+
else:
190+
attention_layernorm_out = self.input_layernorm(hidden_states)
187191

188192
# Self attention.
189193
attn_outputs = self.self_attention(

docs/source/finetune.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ To run fine tuning for any user specific dataset, prepare the dataset using the
8484
3. Inside the newly created efficient-transformers/dataset/custom_dataset.py, define a function named 'get_custom_dataset'.
8585
4. get_custom_dataset() should have following 4 parameters: dataset_config, tokenizer, split, context_length.
8686
5. Inside get_custom_dataset(), user needs to apply prompt and tokenize the dataset accordingly. Please refer the below template on how to define get_custom_dataset().
87-
6. For examples, please refer python files present in [dataset](https://github.com/quic/efficient-transformers/tree/main/QEfficient/finetune/dataset). In case of Samsum dataset, get_preprocessed_samsum() of efficient-transformers/QEfficient/finetune/dataset/samsum_dataset.py is called.
87+
6. For examples, please refer python files present in [dataset](https://github.com/quic/efficient-transformers/tree/main/QEfficient/finetune/dataset).
8888
7. In [dataset_config.py](https://github.com/quic/efficient-transformers/blob/main/QEfficient/finetune/configs/dataset_config.py), for custom_dataset class, pass the appropriate value for train_split and test_split. As an alternative, these values can be passed as command line arguments as well with the finetune command. For example "--train_split train".
8989
8. While running fine tuning, pass argument "-–dataset custom_dataset" to finetune on custom dataset.
9090

0 commit comments

Comments
 (0)