-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_model.py
More file actions
123 lines (98 loc) · 3.69 KB
/
test_model.py
File metadata and controls
123 lines (98 loc) · 3.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import os
import sys
import torch
from typing import List, Dict
def test_tokenizer():
print("Testing tokenizer...")
from src.tokenization_openpeer import OpenPeerTokenizer
tokenizer = OpenPeerTokenizer()
test_text = "Hello world"
tokens = tokenizer(test_text)
print(f"Input text: {test_text}")
print(f"Tokenized: {tokens}")
decoded = tokenizer.decode(tokens["input_ids"])
print(f"Decoded: {decoded}")
def test_model_config():
print("\nTesting model configuration...")
from src.configuration_openpeer import OpenPeerConfig
config = OpenPeerConfig()
print("Model Configuration:")
print(f"Hidden Size: {config.hidden_size}")
print(f"Number of Layers: {config.num_hidden_layers}")
print(f"Number of Attention Heads: {config.num_attention_heads}")
def test_model_architecture():
print("\nTesting model architecture...")
from src.modeling_openpeer import OpenPeerLLM
from src.configuration_openpeer import OpenPeerConfig
config = OpenPeerConfig()
model = OpenPeerLLM(config)
# Print model structure
print("Model Structure:")
for name, param in model.named_parameters():
print(f"{name}: {param.shape}")
def run_inference_test():
print("Initializing OpenPeerLLM...")
from src.modeling_openpeer import OpenPeerLLM
from src.configuration_openpeer import OpenPeerConfig
from src.tokenization_openpeer import OpenPeerTokenizer
config = OpenPeerConfig()
model = OpenPeerLLM(config)
tokenizer = OpenPeerTokenizer()
# Test cases
test_prompts = [
"Explain how decentralized computing works.",
"What are the benefits of peer-to-peer networks?",
"How does distributed machine learning improve model training?"
]
print("\nRunning inference tests...")
for i, prompt in enumerate(test_prompts, 1):
print(f"\nTest {i}:")
print(f"Prompt: {prompt}")
try:
# Tokenize input
inputs = tokenizer(prompt)
input_ids = torch.tensor([inputs["input_ids"]], dtype=torch.long)
# Run model
outputs = model(input_ids)
# Get predictions
logits = outputs["logits"]
predictions = torch.argmax(logits[0], dim=-1)
response = tokenizer.decode(predictions.tolist())
print(f"Response: {response}")
print("-" * 80)
except Exception as e:
print(f"Error during inference: {str(e)}")
# Test model properties
print("\nModel Architecture:")
print(f"Hidden Size: {model.config.hidden_size}")
print(f"Number of Layers: {model.config.num_hidden_layers}")
print(f"Number of Attention Heads: {model.config.num_attention_heads}")
# Memory usage
if torch.cuda.is_available():
print("\nGPU Memory Usage:")
print(f"Allocated: {torch.cuda.memory_allocated() / 1024**2:.2f} MB")
print(f"Cached: {torch.cuda.memory_reserved() / 1024**2:.2f} MB")
print("\nTest completed!")
def main():
print("Starting OpenPeerLLM tests...")
print("=" * 80)
try:
test_tokenizer()
except Exception as e:
print(f"Tokenizer test failed: {str(e)}")
try:
test_model_config()
except Exception as e:
print(f"Config test failed: {str(e)}")
try:
test_model_architecture()
except Exception as e:
print(f"Model architecture test failed: {str(e)}")
print("=" * 80)
print("Tests completed!")
try:
run_inference_test()
except Exception as e:
print(f"Inference test failed: {str(e)}")
if __name__ == "__main__":
main()