[Core] Dynamic image size support for VLMs (#5276)
Signed-off-by: Xiaowei Jiang <xwjiang2010@gmail.com> Co-authored-by: Xiaowei Jiang <xwjiang2010@gmail.com> Co-authored-by: ywang96 <ywang@roblox.com> Co-authored-by: xwjiang2010 <87673679+xwjiang2010@users.noreply.github.com> Co-authored-by: Roger Wang <136131678+ywang96@users.noreply.github.com>
This commit is contained in:
@@ -17,8 +17,7 @@ def run_llava():
|
||||
image_feature_size=576,
|
||||
)
|
||||
|
||||
prompt = "<image>" * 576 + (
|
||||
"\nUSER: What is the content of this image?\nASSISTANT:")
|
||||
prompt = "USER: <image>\nWhat is the content of this image?\nASSISTANT:"
|
||||
|
||||
image = Image.open("images/stop_sign.jpg")
|
||||
|
||||
|
||||
@@ -5,22 +5,17 @@ from PIL import Image
|
||||
|
||||
from vllm import LLM, SamplingParams
|
||||
|
||||
# Dynamic image input is currently not supported and therefore
|
||||
# a fixed image input shape and its corresponding feature size is required.
|
||||
# See https://github.com/vllm-project/vllm/pull/4199 for the complete
|
||||
# configuration matrix.
|
||||
|
||||
|
||||
def run_llava_next():
|
||||
llm = LLM(
|
||||
model="llava-hf/llava-v1.6-mistral-7b-hf",
|
||||
image_token_id=32000,
|
||||
image_input_shape="1,3,336,336",
|
||||
image_feature_size=1176,
|
||||
# Use the maximum possible value for memory profiling
|
||||
image_feature_size=2928,
|
||||
)
|
||||
|
||||
prompt = "[INST] " + "<image>" * 1176 + (
|
||||
"\nWhat is shown in this image? [/INST]")
|
||||
prompt = "[INST] <image>\nWhat is shown in this image? [/INST]"
|
||||
url = "https://h2o-release.s3.amazonaws.com/h2ogpt/bigben.jpg"
|
||||
image = Image.open(BytesIO(requests.get(url).content))
|
||||
sampling_params = SamplingParams(temperature=0.8,
|
||||
|
||||
@@ -5,6 +5,9 @@ from PIL import Image
|
||||
|
||||
from vllm import LLM, SamplingParams
|
||||
|
||||
# The assets are located at `s3://air-example-data-2/vllm_opensource_llava/`.
|
||||
# You can use `.buildkite/download-images.sh` to download them
|
||||
|
||||
|
||||
def run_phi3v():
|
||||
model_path = "microsoft/Phi-3-vision-128k-instruct"
|
||||
@@ -18,7 +21,8 @@ def run_phi3v():
|
||||
trust_remote_code=True,
|
||||
image_token_id=32044,
|
||||
image_input_shape="1,3,1008,1344",
|
||||
image_feature_size=1921,
|
||||
# Use the maximum possible value for memory profiling
|
||||
image_feature_size=2653,
|
||||
max_num_seqs=5,
|
||||
)
|
||||
|
||||
@@ -26,8 +30,6 @@ def run_phi3v():
|
||||
|
||||
# single-image prompt
|
||||
prompt = "<|user|>\n<|image_1|>\nWhat is the season?<|end|>\n<|assistant|>\n" # noqa: E501
|
||||
prompt = prompt.replace("<|image_1|>", "<|image|>" * 1921 + "<s>")
|
||||
|
||||
sampling_params = SamplingParams(temperature=0, max_tokens=64)
|
||||
|
||||
outputs = llm.generate(
|
||||
|
||||
Reference in New Issue
Block a user