diff --git a/brainscore_language/models/phi2/__init__.py b/brainscore_language/models/phi2/__init__.py new file mode 100644 index 00000000..ede23158 --- /dev/null +++ b/brainscore_language/models/phi2/__init__.py @@ -0,0 +1,12 @@ +from brainscore_language import model_registry +from brainscore_language import ArtificialSubject +from brainscore_language.model_helpers.huggingface import HuggingfaceSubject + +# Phi-2: 32 transformer layers, hidden size 2560. +# Layer 31 (last) chosen as default mapping pending benchmark-driven selection. +model_registry['phi-2'] = lambda: HuggingfaceSubject( + model_id='microsoft/phi-2', + region_layer_mapping={ + ArtificialSubject.RecordingTarget.language_system: 'model.layers.31' + }, +) diff --git a/brainscore_language/models/phi2/metadata.yml b/brainscore_language/models/phi2/metadata.yml new file mode 100644 index 00000000..589fe19b --- /dev/null +++ b/brainscore_language/models/phi2/metadata.yml @@ -0,0 +1,15 @@ +models: + phi2: + architecture: DCNN + model_family: phi2 + total_parameter_count: 1234567 + trainable_parameter_count: 1234567 + total_layers: 55 + trainable_layers: 40 + model_size_mb: 1202 + training_dataset: null + task_specialization: null + brainscore_link: https://github.com/brain-score/language/tree/master/brainscore_language/models/phi2 + huggingface_link: null + extra_notes: Temporary hardcoded metadata - will be replaced with actual generation + runnable: true diff --git a/brainscore_language/models/phi2/test.py b/brainscore_language/models/phi2/test.py new file mode 100644 index 00000000..bad59f9d --- /dev/null +++ b/brainscore_language/models/phi2/test.py @@ -0,0 +1,34 @@ +import numpy as np +import pytest + +from brainscore_language import load_model +from brainscore_language.artificial_subject import ArtificialSubject + + +@pytest.mark.memory_intense +def test_load_model(): + """Model can be loaded from the registry without errors.""" + model = load_model('phi-2') + assert model is not None + + +@pytest.mark.memory_intense +def test_identifier(): + model = load_model('phi-2') + assert model.identifier() == 'microsoft/phi-2' + + +@pytest.mark.memory_intense +def test_neural(): + """Model produces neural representations with the expected shape.""" + model = load_model('phi-2') + text = ['the quick brown fox', 'jumps over', 'the lazy dog'] + model.start_neural_recording( + recording_target=ArtificialSubject.RecordingTarget.language_system, + recording_type=ArtificialSubject.RecordingType.fMRI, + ) + representations = model.digest_text(text)['neural'] + assert len(representations['presentation']) == 3 + np.testing.assert_array_equal(representations['stimulus'], text) + assert len(representations['neuroid']) == 2560 +