mirror of
https://github.com/nod-ai/AMD-SHARK-Studio.git
synced 2026-04-03 03:00:17 -04:00
Make batch size configurable
This commit is contained in:
@@ -7,6 +7,8 @@ import sys
|
||||
|
||||
torch.manual_seed(0)
|
||||
|
||||
BATCH_SIZE = 1
|
||||
|
||||
vision_models = [
|
||||
"alexnet",
|
||||
"resnet101",
|
||||
@@ -85,6 +87,7 @@ def get_hf_img_cls_model(name):
|
||||
# test_input = torch.FloatTensor(1, 3, 224, 224).uniform_(-1, 1)
|
||||
# print("test_input.shape: ", test_input.shape)
|
||||
# test_input.shape: torch.Size([1, 3, 224, 224])
|
||||
test_input = test_input.repeat(BATCH_SIZE, 1, 1, 1)
|
||||
actual_out = model(test_input)
|
||||
# print("actual_out.shape: ", actual_out.shape)
|
||||
# actual_out.shape: torch.Size([1, 1000])
|
||||
@@ -121,7 +124,7 @@ def get_hf_model(name):
|
||||
|
||||
model = HuggingFaceLanguage(name)
|
||||
# TODO: Currently the test input is set to (1,128)
|
||||
test_input = torch.randint(2, (1, 128))
|
||||
test_input = torch.randint(2, (BATCH_SIZE, 128))
|
||||
actual_out = model(test_input)
|
||||
return model, test_input, actual_out
|
||||
|
||||
@@ -161,7 +164,7 @@ def get_vision_model(torch_model):
|
||||
fp16_model = True
|
||||
torch_model = vision_models_dict[torch_model]
|
||||
model = VisionModule(torch_model)
|
||||
test_input = torch.randn(1, 3, 224, 224)
|
||||
test_input = torch.randn(BATCH_SIZE, 3, 224, 224)
|
||||
actual_out = model(test_input)
|
||||
if fp16_model is not None:
|
||||
test_input_fp16 = test_input.to(
|
||||
@@ -209,6 +212,7 @@ def get_fp16_model(torch_model):
|
||||
model = BertHalfPrecisionModel(modelname)
|
||||
tokenizer = AutoTokenizer.from_pretrained(modelname)
|
||||
text = "Replace me by any text you like."
|
||||
text = [text] * BATCH_SIZE
|
||||
test_input_fp16 = tokenizer(
|
||||
text,
|
||||
truncation=True,
|
||||
|
||||
@@ -93,15 +93,24 @@ def get_TFhf_model(name):
|
||||
truncation=True,
|
||||
max_length=MAX_SEQUENCE_LENGTH,
|
||||
)
|
||||
for key in encoded_input:
|
||||
encoded_input[key] = tf.expand_dims(
|
||||
tf.convert_to_tensor(encoded_input[key]), 0
|
||||
)
|
||||
test_input = (
|
||||
encoded_input["input_ids"],
|
||||
encoded_input["attention_mask"],
|
||||
encoded_input["token_type_ids"],
|
||||
)
|
||||
test_input = [
|
||||
tf.reshape(
|
||||
tf.convert_to_tensor(encoded_input["input_ids"], dtype=tf.int32),
|
||||
[BATCH_SIZE, MAX_SEQUENCE_LENGTH],
|
||||
),
|
||||
tf.reshape(
|
||||
tf.convert_to_tensor(
|
||||
encoded_input["attention_mask"], dtype=tf.int32
|
||||
),
|
||||
[BATCH_SIZE, MAX_SEQUENCE_LENGTH],
|
||||
),
|
||||
tf.reshape(
|
||||
tf.convert_to_tensor(
|
||||
encoded_input["token_type_ids"], dtype=tf.int32
|
||||
),
|
||||
[BATCH_SIZE, MAX_SEQUENCE_LENGTH],
|
||||
),
|
||||
]
|
||||
actual_out = model.forward(*test_input)
|
||||
return model, test_input, actual_out
|
||||
|
||||
@@ -133,6 +142,7 @@ def preprocess_input(
|
||||
model_name, text="This is just used to compile the model"
|
||||
):
|
||||
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
||||
text = [text] * BATCH_SIZE
|
||||
inputs = tokenizer(
|
||||
text,
|
||||
padding="max_length",
|
||||
@@ -167,8 +177,8 @@ def get_causal_lm_model(hf_name, text="Hello, this is the default text."):
|
||||
##################### TensorFlow Keras Resnet Models #########################################################
|
||||
# Static shape, including batch size (1).
|
||||
# Can be dynamic once dynamic shape support is ready.
|
||||
RESNET_INPUT_SHAPE = [1, 224, 224, 3]
|
||||
EFFICIENTNET_INPUT_SHAPE = [1, 384, 384, 3]
|
||||
RESNET_INPUT_SHAPE = [BATCH_SIZE, 224, 224, 3]
|
||||
EFFICIENTNET_INPUT_SHAPE = [BATCH_SIZE, 384, 384, 3]
|
||||
|
||||
|
||||
class ResNetModule(tf.Module):
|
||||
@@ -224,6 +234,7 @@ def load_image(path_to_image, width, height, channels):
|
||||
image = tf.image.decode_image(image, channels=channels)
|
||||
image = tf.image.resize(image, (width, height))
|
||||
image = image[tf.newaxis, :]
|
||||
image = tf.tile(image, [BATCH_SIZE, 1, 1, 1])
|
||||
return image
|
||||
|
||||
|
||||
@@ -256,7 +267,7 @@ import requests
|
||||
|
||||
# Create a set of input signature.
|
||||
input_signature_img_cls = [
|
||||
tf.TensorSpec(shape=[1, 3, 224, 224], dtype=tf.float32),
|
||||
tf.TensorSpec(shape=[BATCH_SIZE, 3, 224, 224], dtype=tf.float32),
|
||||
]
|
||||
|
||||
|
||||
@@ -304,6 +315,9 @@ def preprocess_input_image(model_name):
|
||||
)
|
||||
# inputs: {'pixel_values': <tf.Tensor: shape=(1, 3, 224, 224), dtype=float32, numpy=array([[[[]]]], dtype=float32)>}
|
||||
inputs = feature_extractor(images=image, return_tensors="tf")
|
||||
inputs["pixel_values"] = tf.tile(
|
||||
inputs["pixel_values"], [BATCH_SIZE, 1, 1, 1]
|
||||
)
|
||||
|
||||
return [inputs[str(*inputs)]]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user