Commit d4a6af96 authored by one's avatar one
Browse files

[evo2] Update to dtk26.04

parent 00210658
diff --git a/evo2/configs/evo2-7b-1m.yml b/evo2/configs/evo2-7b-1m.yml
index 5ee5461..4fc408f 100644
--- a/evo2/configs/evo2-7b-1m.yml
+++ b/evo2/configs/evo2-7b-1m.yml
@@ -49,7 +49,7 @@ mha_out_proj_bias: True
hyena_out_proj_bias: True
hyena_flip_x1x2: False
qkv_proj_bias: False
-use_fp8_input_projections: True
+use_fp8_input_projections: False
max_seqlen: 1048576
max_batch_size: 1
final_norm: True
diff --git a/evo2/test/test_evo2_generation.py b/evo2/test/test_evo2_generation.py diff --git a/evo2/test/test_evo2_generation.py b/evo2/test/test_evo2_generation.py
index 789ecb3..2345c75 100644 index bc420b7..928854f 100644
--- a/evo2/test/test_evo2_generation.py --- a/evo2/test/test_evo2_generation.py
+++ b/evo2/test/test_evo2_generation.py +++ b/evo2/test/test_evo2_generation.py
@@ -4,6 +4,7 @@ from importlib import resources @@ -4,6 +4,7 @@ from importlib import resources
...@@ -19,38 +32,35 @@ index 789ecb3..2345c75 100644 ...@@ -19,38 +32,35 @@ index 789ecb3..2345c75 100644
generated = model.generate( generated = model.generate(
prompt_seqs=[prompt], prompt_seqs=[prompt],
n_tokens=n_tokens, n_tokens=n_tokens,
@@ -72,7 +75,10 @@ def generate_and_score(*, sequences, model, generations_per_prompt=5, n_tokens=5 @@ -72,6 +75,9 @@ def generate_and_score(*, sequences, model, generations_per_prompt=5, n_tokens=5
top_k=top_k, top_k=top_k,
top_p=top_p, top_p=top_p,
) )
-
+ if torch.cuda.is_available(): torch.cuda.synchronize() + if torch.cuda.is_available(): torch.cuda.synchronize()
+ elapsed_time += time.perf_counter() + elapsed_time += time.perf_counter()
+ print(f"[{i}] Time for model.generate: {elapsed_time:.3f} s") + print(f"[{i}] Time for model.generate: {elapsed_time:.3f} s")
+
decoded_seq = generated.sequences[0] # Assuming generate returns list of sequences decoded_seq = generated.sequences[0] # Assuming generate returns list of sequences
score = calculate_sequence_identity(decoded_seq, target) score = calculate_sequence_identity(decoded_seq, target)
scores.append(score) @@ -95,7 +101,7 @@ def main():
@@ -94,6 +100,7 @@ def main():
parser = argparse.ArgumentParser(description="Test Evo2 Model Generation") parser = argparse.ArgumentParser(description="Test Evo2 Model Generation")
parser.add_argument("--model_name", choices=['evo2_7b', 'evo2_40b', 'evo2_1b_base'], default='evo2_7b', parser.add_argument("--model_name", choices=['evo2_7b', 'evo2_40b', 'evo2_1b_base', 'evo2_20b'], default='evo2_7b',
help="Model to test (supports evo2_7b, evo2_40b, evo2_1b_base)") help="Model to test (supports evo2_7b, evo2_40b, evo2_1b_base, evo2_20b)")
-
+ parser.add_argument("--local_path", type=str, default=None) + parser.add_argument("--local_path", type=str, default=None)
args = parser.parse_args() args = parser.parse_args()
@@ -101,8 +108,8 @@ def main(): # Reduce CUDA memory fragmentation for large models (e.g. evo2_20b)
@@ -105,7 +111,7 @@ def main():
torch.manual_seed(1) torch.manual_seed(1)
torch.cuda.manual_seed(1) torch.cuda.manual_seed(1)
- model = Evo2(args.model_name) - model = Evo2(args.model_name)
-
+ model = Evo2(args.model_name, local_path=args.local_path) + model = Evo2(args.model_name, local_path=args.local_path)
+
# Test parameters: greedy sampling of 500 tokens # Test parameters: greedy sampling of 500 tokens
test_params = { test_params = {
'n_tokens': 500, @@ -145,4 +151,4 @@ def main():
@@ -140,4 +147,4 @@ def main():
print(f"\nTest Failed: Expected {expected_score}%, got {mean_score}%") print(f"\nTest Failed: Expected {expected_score}%, got {mean_score}%")
if __name__ == "__main__": if __name__ == "__main__":
...@@ -58,15 +68,15 @@ index 789ecb3..2345c75 100644 ...@@ -58,15 +68,15 @@ index 789ecb3..2345c75 100644
\ No newline at end of file \ No newline at end of file
+ main() + main()
diff --git a/pyproject.toml b/pyproject.toml diff --git a/pyproject.toml b/pyproject.toml
index fb1c1e6..6c7bd64 100644 index 4347bbc..77b3f6f 100644
--- a/pyproject.toml --- a/pyproject.toml
+++ b/pyproject.toml +++ b/pyproject.toml
@@ -3,7 +3,7 @@ name = "evo2" @@ -7,7 +7,7 @@ name = "evo2"
version = "0.3.0" version = "0.5.3"
description = "Genome modeling across all domains of life" description = "Genome modeling across all domains of life"
readme = "README.md" readme = "README.md"
-requires-python = ">=3.11,<3.13" -requires-python = ">=3.11,<3.13"
+requires-python = ">=3.10,<3.13" +requires-python = ">=3.10,<3.13"
license = "Apache-2.0" license = {file = "LICENSE"}
authors = [ authors = [
{name = "Evo 2 Team"}, {name = "Evo 2 Team"},
...@@ -5,6 +5,7 @@ from pathlib import Path ...@@ -5,6 +5,7 @@ from pathlib import Path
from typing import Optional from typing import Optional
import numpy as np import numpy as np
import time import time
import torch import torch
from evo2 import Evo2 from evo2 import Evo2
...@@ -190,13 +191,14 @@ def main(): ...@@ -190,13 +191,14 @@ def main():
- Evo 2 40B 1m: 91.15% - Evo 2 40B 1m: 91.15%
- Evo 2 7B 1m: 89.25% - Evo 2 7B 1m: 89.25%
- Evo 2 1B base: 68.0% - Evo 2 1B base: 68.0%
- Evo 2 20B 1m: 93.4%
""" """
parser = argparse.ArgumentParser(description="Test Evo2 Model Generation") parser = argparse.ArgumentParser(description="Test Evo2 Model Generation")
parser.add_argument( parser.add_argument(
"--model_name", "--model_name",
choices=["evo2_7b", "evo2_40b", "evo2_1b_base"], choices=["evo2_7b", "evo2_40b", "evo2_1b_base", "evo2_20b"],
default="evo2_7b", default="evo2_7b",
help="Model to test (supports evo2_7b, evo2_40b, evo2_1b_base)", help="Model to test (supports evo2_7b, evo2_40b, evo2_1b_base, evo2_20b)",
) )
parser.add_argument("--local_path", type=str, default=None) parser.add_argument("--local_path", type=str, default=None)
parser.add_argument( parser.add_argument(
...@@ -247,6 +249,9 @@ def main(): ...@@ -247,6 +249,9 @@ def main():
args = parser.parse_args() args = parser.parse_args()
# Reduce CUDA memory fragmentation for large models (e.g. evo2_20b)
torch.cuda.memory._set_allocator_settings("expandable_segments:True")
# Set random seeds # Set random seeds
torch.manual_seed(1) torch.manual_seed(1)
torch.cuda.manual_seed(1) torch.cuda.manual_seed(1)
...@@ -303,7 +308,12 @@ def main(): ...@@ -303,7 +308,12 @@ def main():
# Validate against expected scores # Validate against expected scores
eps = 3 # large epsilon for direct comparison, since there are numeric differences by versions eps = 3 # large epsilon for direct comparison, since there are numeric differences by versions
expected_scores = {"evo2_40b": 91.15, "evo2_7b": 89.25, "evo2_1b_base": 68.0} expected_scores = {
"evo2_40b": 91.15,
"evo2_7b": 89.25,
"evo2_1b_base": 68.0,
"evo2_20b": 93.4,
}
expected_score = expected_scores[args.model_name] expected_score = expected_scores[args.model_name]
if abs(mean_score - expected_score) < eps: if abs(mean_score - expected_score) < eps:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment