MCPcopy Create free account
hub / github.com/bitsandbytes-foundation/bitsandbytes / run_single

Function run_single

examples/cpu/cpu_training.py:152–190  ·  view source on GitHub ↗
(args)

Source from the content-addressed store, hash-verified

150
151
152def run_single(args):
153 dtype = get_torch_dtype(args.dtype)
154 print(f"=== Training with bnb {args.optimizer} on CPU ({args.dtype}) ===")
155 print(f"Model: {args.model} | Dataset: {args.dataset}")
156 print(f"Steps: {args.steps} | LR: {args.lr} | Batch: {args.batch_size} | MaxLen: {args.max_length}")
157 print()
158
159 tokenizer = AutoTokenizer.from_pretrained(args.model)
160 if tokenizer.pad_token is None:
161 tokenizer.pad_token = tokenizer.eos_token
162
163 model = AutoModelForCausalLM.from_pretrained(args.model, dtype=dtype)
164
165 ds = prepare_data(tokenizer, args.dataset, args.max_length)
166 dataloader = torch.utils.data.DataLoader(
167 ds,
168 batch_size=args.batch_size,
169 shuffle=True,
170 collate_fn=collate_fn,
171 )
172
173 optimizer = create_optimizer(model, args.optimizer, args.lr)
174
175 history = train_loop(model, optimizer, dataloader, args.steps, args.log_interval)
176
177 loss_start = history[0][1]
178 loss_end = history[-1][1]
179 total_time = history[-1][2]
180 print("\n--- Results ---")
181 print(f"Loss: {loss_start:.4f} -> {loss_end:.4f} (delta={loss_start - loss_end:+.4f})")
182 print(f"Total time: {total_time:.1f}s ({args.steps / total_time:.1f} steps/s)")
183 print(f"Optimizer: bnb.optim.{args.optimizer} | Dtype: {args.dtype}")
184
185 if loss_end >= loss_start:
186 print("WARNING: Loss did not decrease! Training may not be working correctly.")
187 else:
188 print("OK: Loss decreased as expected.")
189
190 return history
191
192
193def run_compare(args):

Callers 1

mainFunction · 0.70

Calls 4

get_torch_dtypeFunction · 0.70
prepare_dataFunction · 0.70
create_optimizerFunction · 0.70
train_loopFunction · 0.70

Tested by

no test coverage detected