[Feat] Add modalities for vision server when handling pixel values for llava (#1346)

This commit is contained in:
Kaichen Zhang - NTU
2024-09-09 02:07:34 -07:00
committed by GitHub
parent 8e6bdf851c
commit 662ecd9368
11 changed files with 40 additions and 2 deletions
+4
View File
@@ -50,6 +50,8 @@ class GenerateReqInput:
return_text_in_logprobs: bool = False
# Whether to stream output.
stream: bool = False
# The modalities of the image data [image, multi-images, video]
modalities: Optional[List[str]] = None
def post_init(self):
if (self.text is None and self.input_ids is None) or (
@@ -177,6 +179,8 @@ class TokenizedGenerateReqInput:
top_logprobs_num: int
# Whether to stream output
stream: bool
# Modalities of the input images
modalites: Optional[List[str]] = None
@dataclass
@@ -130,6 +130,7 @@ class Req:
self.image_sizes = None
self.image_offsets = None
self.pad_value = None
self.modalities = None
# Prefix info
self.extend_input_len = 0
@@ -188,6 +188,7 @@ class TokenizerManager:
pixel_values, image_hashes, image_sizes = await self._get_pixel_values(
obj.image_data if not_use_index else obj.image_data[index]
)
modalities = obj.modalities
return_logprob = (
obj.return_logprob if not_use_index else obj.return_logprob[index]
)
@@ -243,6 +244,7 @@ class TokenizerManager:
pixel_values, image_hashes, image_sizes = await self._get_pixel_values(
obj.image_data[0]
)
modalities = obj.modalities
return_logprob = obj.return_logprob[0]
logprob_start_len = obj.logprob_start_len[0]
top_logprobs_num = obj.top_logprobs_num[0]
@@ -263,6 +265,7 @@ class TokenizerManager:
logprob_start_len,
top_logprobs_num,
obj.stream,
modalities,
)
else: # is embedding
tokenized_obj = TokenizedEmbeddingReqInput(
@@ -346,6 +349,7 @@ class TokenizerManager:
pixel_values, image_hashes, image_sizes = (
await self._get_pixel_values(obj.image_data[index])
)
modalities = obj.modalities
tokenized_obj = TokenizedGenerateReqInput(
rid,
@@ -359,6 +363,7 @@ class TokenizerManager:
obj.logprob_start_len[index],
obj.top_logprobs_num[index],
obj.stream,
modalities,
)
else:
tokenized_obj = TokenizedEmbeddingReqInput(
+2
View File
@@ -358,6 +358,8 @@ class ModelTpServer:
req.pixel_values,
req.image_sizes,
)
# Only when pixel values is not None we have modalities
req.modalities = recv_req.modalites
req.return_logprob = recv_req.return_logprob
req.logprob_start_len = recv_req.logprob_start_len
req.top_logprobs_num = recv_req.top_logprobs_num