Skip to content

Commit 2851a64

Browse files
First commit.
1 parent 5720639 commit 2851a64

29 files changed

+760
-710
lines changed

examples/basic_usage.py

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

examples/complete_usage.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from quantllm import (
2-
ModelLoader,
2+
Model,
33
LoadDataset,
44
DatasetPreprocessor,
55
DatasetSplitter,
@@ -11,7 +11,7 @@
1111
)
1212
import os
1313
# Initialize logger
14-
from quantllm.finetune import TrainingLogger
14+
from quantllm.trainer import TrainingLogger
1515
from quantllm.config import (
1616
DatasetConfig,
1717
ModelConfig,
@@ -34,11 +34,10 @@ def main():
3434
model_config = ModelConfig(
3535
model_name="meta-llama/Llama-3.2-3B",
3636
load_in_4bit=True,
37-
use_lora=True,
38-
hub_manager=hub_manager
37+
use_lora=True
3938
)
4039

41-
model_loader = ModelLoader(model_config)
40+
model_loader = Model(model_config)
4241
model = model_loader.get_model()
4342
tokenizer = model_loader.get_tokenizer()
4443

@@ -52,8 +51,7 @@ def main():
5251
max_length=512,
5352
train_size=0.8,
5453
val_size=0.1,
55-
test_size=0.1,
56-
hub_manager=hub_manager
54+
test_size=0.1
5755
)
5856

5957
# Load and prepare dataset
@@ -73,7 +71,7 @@ def main():
7371
# 4. Dataset Preprocessing
7472
logger.log_info("Preprocessing datasets")
7573
preprocessor = DatasetPreprocessor(tokenizer, logger)
76-
train_dataset, val_dataset, test_dataset = preprocessor.tokenize_dataset(
74+
train_tokenizer, val_tokenizer, test_tokenizer = preprocessor.tokenize_dataset(
7775
train_dataset, val_dataset, test_dataset,
7876
max_length=dataset_config.max_length,
7977
text_column=dataset_config.text_column,
@@ -83,9 +81,9 @@ def main():
8381
# Create data loaders using QuantLLMDataLoader
8482
logger.log_info("Creating data loaders")
8583
dataloaders = DataLoader.from_datasets(
86-
train_dataset=train_dataset,
87-
val_dataset=val_dataset,
88-
test_dataset=test_dataset,
84+
train_dataset=train_tokenizer,
85+
val_dataset=val_tokenizer,
86+
test_dataset=test_tokenizer,
8987
batch_size=4,
9088
num_workers=4
9189
)

examples/integrated_usage.py

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

quantllm/__init__.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
from .model import ModelLoader
2-
from .dataset import (
1+
from .model import Model
2+
from .data import (
33
LoadDataset,
44
DatasetPreprocessor,
55
DatasetSplitter,
66
DataLoader
77
)
8-
from .finetune import (
8+
from .trainer import (
99
FineTuningTrainer,
1010
ModelEvaluator,
1111
TrainingLogger
1212
)
13-
from .hub import HubManager
14-
from .hub import CheckpointManager
13+
from .hub import HubManager, CheckpointManager
14+
1515
from .config import (
1616
ModelConfig,
1717
DatasetConfig,
@@ -22,7 +22,7 @@
2222

2323
__all__ = [
2424
# Model
25-
"ModelLoader",
25+
"Model",
2626

2727
# Dataset
2828
"DataLoader",

quantllm/cli/__init__.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""Command-line interface for QuantLLM package."""
2+
3+
from .commands import train, evaluate, quantize, serve
4+
from .parser import create_parser
5+
6+
__all__ = ["main", "train", "evaluate", "quantize", "serve"]
7+
8+
def main():
9+
"""Main entry point for the CLI."""
10+
parser = create_parser()
11+
args = parser.parse_args()
12+
13+
if hasattr(args, "func"):
14+
args.func(args)
15+
else:
16+
parser.print_help()

quantllm/cli/commands.py

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
from argparse import Namespace
2+
from ..models import ModelLoader, QuantConfig
3+
from ..data import DatasetLoader
4+
from ..training import FineTuningTrainer, ModelEvaluator
5+
from ..config import ModelConfig, TrainingConfig, DatasetConfig
6+
from ..runtime import DeviceManager
7+
from ..utils.monitoring import TrainingLogger
8+
9+
def train(args: Namespace):
10+
"""Execute model training command."""
11+
logger = TrainingLogger()
12+
device_manager = DeviceManager()
13+
14+
try:
15+
# Load configurations
16+
model_config = ModelConfig(
17+
model_name=args.model,
18+
load_in_4bit=args.quantization == "4bit",
19+
load_in_8bit=args.quantization == "8bit",
20+
use_lora=args.use_lora
21+
)
22+
23+
dataset_config = DatasetConfig(dataset_name=args.dataset)
24+
training_config = TrainingConfig(output_dir=args.output_dir)
25+
26+
# Initialize components
27+
model_loader = ModelLoader(model_config)
28+
dataset_loader = DatasetLoader(dataset_config)
29+
30+
# Load model and dataset
31+
model, tokenizer = model_loader.load()
32+
dataset = dataset_loader.load()
33+
34+
# Initialize trainer
35+
trainer = FineTuningTrainer(
36+
model=model,
37+
tokenizer=tokenizer,
38+
dataset=dataset,
39+
config=training_config,
40+
device_manager=device_manager
41+
)
42+
43+
# Start training
44+
trainer.train()
45+
46+
except Exception as e:
47+
logger.error(f"Training failed: {str(e)}")
48+
raise
49+
50+
def evaluate(args: Namespace):
51+
"""Execute model evaluation command."""
52+
logger = TrainingLogger()
53+
device_manager = DeviceManager()
54+
55+
try:
56+
# Load model and dataset
57+
model_config = ModelConfig(model_name=args.model)
58+
dataset_config = DatasetConfig(dataset_name=args.dataset)
59+
60+
model_loader = ModelLoader(model_config)
61+
dataset_loader = DatasetLoader(dataset_config)
62+
63+
model, tokenizer = model_loader.load()
64+
dataset = dataset_loader.load()
65+
66+
# Initialize evaluator
67+
evaluator = ModelEvaluator(
68+
model=model,
69+
tokenizer=tokenizer,
70+
device_manager=device_manager
71+
)
72+
73+
# Run evaluation
74+
results = evaluator.evaluate(dataset)
75+
76+
# Save results if output file specified
77+
if args.output_file:
78+
evaluator.save_results(results, args.output_file)
79+
80+
except Exception as e:
81+
logger.error(f"Evaluation failed: {str(e)}")
82+
raise
83+
84+
def quantize(args: Namespace):
85+
"""Execute model quantization command."""
86+
logger = TrainingLogger()
87+
88+
try:
89+
# Configure quantization
90+
model_config = ModelConfig(
91+
model_name=args.model,
92+
load_in_4bit=args.bits == 4,
93+
load_in_8bit=args.bits == 8
94+
)
95+
96+
# Load and quantize model
97+
model_loader = ModelLoader(model_config)
98+
model, tokenizer = model_loader.load()
99+
100+
# Save quantized model
101+
model.save_pretrained(args.output_dir)
102+
tokenizer.save_pretrained(args.output_dir)
103+
104+
except Exception as e:
105+
logger.error(f"Quantization failed: {str(e)}")
106+
raise
107+
108+
def serve(args: Namespace):
109+
"""Execute model serving command."""
110+
logger = TrainingLogger()
111+
device_manager = DeviceManager()
112+
113+
try:
114+
from ..serving import ModelServer
115+
116+
# Load model
117+
model_config = ModelConfig(model_name=args.model)
118+
model_loader = ModelLoader(model_config)
119+
model, tokenizer = model_loader.load()
120+
121+
# Initialize and start server
122+
server = ModelServer(
123+
model=model,
124+
tokenizer=tokenizer,
125+
device_manager=device_manager,
126+
host=args.host,
127+
port=args.port
128+
)
129+
130+
server.start()
131+
132+
except Exception as e:
133+
logger.error(f"Server startup failed: {str(e)}")
134+
raise

0 commit comments

Comments
 (0)