deepspeedai / deepspeedai/DeepSpeed
[QUESTION] How to figure out correct `injection_policy` for Flan-T5
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 43.1k
- Forks
- 5k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 112
Description
I would like to use deepspeed-inference with the flan-t5 model and I have the following code:
def get_model():
model_name = "google/flan-t5-small"
tensor_parallel = int(os.getenv("TENSOR_PARALLEL_DEGREE", "2"))
local_rank = int(os.getenv("LOCAL_RANK", "0"))
model = T5ForConditionalGeneration.from_pretrained(
model_name, device_map="auto"
)
tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-small")
# create the model
config = DeepSpeedInferenceConfig(
replace_with_kernel_inject=True,
dtype=model.dtype,
tensor_parallel=DeepSpeedTPConfig(
enabled=True, tp_size=tensor_parallel, mpu=None, tp_group=None
),
injection_policy={T5Block: ('SelfAttention.o', 'EncDecAttention.o', 'DenseReluDense.wo')}
)
model = deepspeed.init_inference(
model,
config=config,
)
generator = pipeline(
task="text2text-generation", model=model, tokenizer=tokenizer, device=local_rank # TODO: try text2text-generation instead
)
return generator
Basically I'm wondering if I can use the T5Block class in the injection_policy for the flan-t5 model as it's part of the same model family. I'm wondering how I can figure out whether this would or wouldn't work without just more or less blindly trying both out.
More generally, how can I find more information on the requirements of an injection_policy for models and verifying that the injection_policy actually makes sense?
I have read:
- https://deepspeed.readthedocs.io/en/latest/inference-init.html
- https://www.deepspeed.ai/tutorials/inference-tutorial/#initializing-for-inference
but wasn't able to find an answer to my question.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the inference-init documentation, the inference tutorial, and the DeepSpeed init_inference entry point mentioned in the issue. Compare the model structure used by Flan-T5 with the T5Block injection_policy entries and document the requirements and a way to verify whether the policy is valid. Done means the issue has a clear, reproducible answer rather than another trial-and-error suggestion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- distributed-systems, machine-learning
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100