Just ditch the non flash integration tests. They work, but seem to mess

the CI.
This commit is contained in:
Ubuntu 2023-06-07 14:28:17 +00:00
parent cc84387877
commit f3388d290f
3 changed files with 86 additions and 84 deletions

View File

@ -1,44 +1,44 @@
import pytest # import pytest
#
#
@pytest.fixture(scope="module") # @pytest.fixture(scope="module")
def neox_handle(launcher): # def neox_handle(launcher):
with launcher("stabilityai/stablelm-tuned-alpha-3b", num_shard=1, use_flash_attention=False) as handle: # with launcher("stabilityai/stablelm-tuned-alpha-3b", num_shard=1, use_flash_attention=False) as handle:
yield handle # yield handle
#
#
@pytest.fixture(scope="module") # @pytest.fixture(scope="module")
async def neox(neox_handle): # async def neox(neox_handle):
await neox_handle.health(300) # await neox_handle.health(300)
return neox_handle.client # return neox_handle.client
#
#
@pytest.mark.asyncio # @pytest.mark.asyncio
async def test_neox(neox, response_snapshot): # async def test_neox(neox, response_snapshot):
response = await neox.generate( # response = await neox.generate(
"<|USER|>What's your mood today?<|ASSISTANT|>", # "<|USER|>What's your mood today?<|ASSISTANT|>",
max_new_tokens=10, # max_new_tokens=10,
decoder_input_details=True, # decoder_input_details=True,
) # )
#
assert response.details.generated_tokens == 10 # assert response.details.generated_tokens == 10
assert response == response_snapshot # assert response == response_snapshot
#
#
@pytest.mark.asyncio # @pytest.mark.asyncio
async def test_neox_load(neox, generate_load, response_snapshot): # async def test_neox_load(neox, generate_load, response_snapshot):
responses = await generate_load( # responses = await generate_load(
neox, # neox,
"<|USER|>What's your mood today?<|ASSISTANT|>", # "<|USER|>What's your mood today?<|ASSISTANT|>",
max_new_tokens=10, # max_new_tokens=10,
n=4, # n=4,
) # )
#
generated_texts = [r.generated_text for r in responses] # generated_texts = [r.generated_text for r in responses]
#
assert len(generated_texts) == 4 # assert len(generated_texts) == 4
assert generated_texts, all( # assert generated_texts, all(
[text == generated_texts[0] for text in generated_texts] # [text == generated_texts[0] for text in generated_texts]
) # )
#
assert responses == response_snapshot # assert responses == response_snapshot

View File

@ -1,40 +1,40 @@
import pytest # import pytest
#
#
@pytest.fixture(scope="module") # @pytest.fixture(scope="module")
def neox_sharded_handle(launcher): # def neox_sharded_handle(launcher):
with launcher("OpenAssistant/oasst-sft-1-pythia-12b", num_shard=2, use_flash_attention=False) as handle: # with launcher("OpenAssistant/oasst-sft-1-pythia-12b", num_shard=2, use_flash_attention=False) as handle:
yield handle # yield handle
#
#
@pytest.fixture(scope="module") # @pytest.fixture(scope="module")
async def neox_sharded(neox_sharded_handle): # async def neox_sharded(neox_sharded_handle):
await neox_sharded_handle.health(300) # await neox_sharded_handle.health(300)
return neox_sharded_handle.client # return neox_sharded_handle.client
#
#
@pytest.mark.asyncio # @pytest.mark.asyncio
async def test_neox(neox_sharded, response_snapshot): # async def test_neox(neox_sharded, response_snapshot):
response = await neox_sharded.generate( # response = await neox_sharded.generate(
"<|prompter|>What is a meme, and what's the history behind this word?<|endoftext|><|assistant|>", # "<|prompter|>What is a meme, and what's the history behind this word?<|endoftext|><|assistant|>",
max_new_tokens=10, # max_new_tokens=10,
decoder_input_details=True, # decoder_input_details=True,
) # )
#
assert response.details.generated_tokens == 10 # assert response.details.generated_tokens == 10
assert response == response_snapshot # assert response == response_snapshot
#
#
@pytest.mark.asyncio # @pytest.mark.asyncio
async def test_neox_load(neox_sharded, generate_load, response_snapshot): # async def test_neox_load(neox_sharded, generate_load, response_snapshot):
responses = await generate_load( # responses = await generate_load(
neox_sharded, # neox_sharded,
"<|prompter|>What is a meme, and what's the history behind this word?<|endoftext|><|assistant|>", # "<|prompter|>What is a meme, and what's the history behind this word?<|endoftext|><|assistant|>",
max_new_tokens=10, # max_new_tokens=10,
n=4, # n=4,
) # )
#
assert len(responses) == 4 # assert len(responses) == 4
assert all([r.generated_text == responses[0].generated_text for r in responses]) # assert all([r.generated_text == responses[0].generated_text for r in responses])
#
assert responses == response_snapshot # assert responses == response_snapshot

View File

@ -90,6 +90,8 @@ class FlashNeoxAttention(torch.nn.Module):
self.head_size = hidden_size // num_heads self.head_size = hidden_size // num_heads
self.num_heads = self.num_heads // weights.process_group.size() self.num_heads = self.num_heads // weights.process_group.size()
rotary_pct = config.rotary_pct
rotary_ndims = int(self.head_size * rotary_pct) rotary_ndims = int(self.head_size * rotary_pct)
self.rotary_emb = PositionRotaryEmbedding.load(prefix=f"{prefix}.rotary_emb", weights=weights) self.rotary_emb = PositionRotaryEmbedding.load(prefix=f"{prefix}.rotary_emb", weights=weights)