'MultiAdapterLinear' object has no attribute '_cast_input_dtype'
I cannot process this using the transformer modules. Can you take a look below?
AttributeError Traceback (most recent call last)
Cell In[10], line 1
----> 1 jina_model.encode_text("test sample text",
2 task="text-matching"
3 )
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/modeling_jina_embeddings_v4.py:468, in JinaEmbeddingsV4Model.encode_text(self, texts, task, max_length, batch_size, return_multivector, return_numpy, truncate_dim, prompt_name)
465 if isinstance(texts, str):
466 texts = [texts]
--> 468 embeddings = self._process_batches(
469 data=texts,
470 processor_fn=processor_fn,
471 desc="Encoding texts...",
472 task_label=task,
473 return_multivector=return_multivector,
474 return_numpy=return_numpy,
475 batch_size=batch_size,
476 **encode_kwargs,
477 )
479 return embeddings if return_list else embeddings[0]
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/modeling_jina_embeddings_v4.py:346, in JinaEmbeddingsV4Model._process_batches(self, data, task_label, processor_fn, desc, return_multivector, return_numpy, batch_size, truncate_dim)
342 batch = {k: v.to(self.device) for k, v in batch.items()}
343 with torch.autocast(
344 device_type=torch.device(self.device).type, dtype=torch.bfloat16
345 ):
--> 346 embeddings = self(**batch, task_label=task_label)
347 if not return_multivector:
348 embeddings = embeddings.single_vec_emb
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1553, in Module._wrapped_call_impl(self, *args, **kwargs)
1551 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1552 else:
-> 1553 return self._call_impl(*args, **kwargs)
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1562, in Module._call_impl(self, *args, **kwargs)
1557 # If we don't have any hooks, we want to skip the rest of the logic in
1558 # this function, and just call forward.
1559 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
1560 or _global_backward_pre_hooks or _global_backward_hooks
1561 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1562 return forward_call(*args, **kwargs)
1564 try:
1565 result = None
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/modeling_jina_embeddings_v4.py:291, in JinaEmbeddingsV4Model.forward(self, task_label, input_ids, attention_mask, output_vlm_last_hidden_states, **kwargs)
279 """
280 Forward pass through the model. Returns both single-vector and multi-vector embeddings.
281 Args:
(...)
288 multi_vec_emb (torch.Tensor, optional): Multi-vector embeddings.
289 """
290 # Forward pass through the VLM
--> 291 hidden_states = self.get_last_hidden_states(
292 input_ids=input_ids,
293 attention_mask=attention_mask,
294 task_label=task_label,
295 **kwargs,
296 ) # (batch_size, seq_length, hidden_size)
297 # Compute the embeddings
298 single_vec_emb = self.get_single_vector_embeddings(
299 hidden_states=hidden_states,
300 attention_mask=attention_mask,
301 input_ids=input_ids,
302 )
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/modeling_jina_embeddings_v4.py:190, in JinaEmbeddingsV4Model.get_last_hidden_states(self, task_label, input_ids, attention_mask, **kwargs)
183 position_ids, rope_deltas = self.model.get_rope_index(
184 input_ids=input_ids,
185 image_grid_thw=kwargs.get("image_grid_thw", None),
186 attention_mask=attention_mask,
187 )
189 kwargs["output_hidden_states"] = True
--> 190 outputs = super().forward(
191 task_label=task_label,
192 input_ids=input_ids,
193 attention_mask=attention_mask,
194 **kwargs,
195 position_ids=position_ids,
196 rope_deltas=rope_deltas,
197 use_cache=False,
198 )
200 hidden_states = outputs.hidden_states
201 if not hidden_states:
File ~/.local/lib/python3.10/site-packages/transformers/utils/generic.py:943, in can_return_tuple..wrapper(self, *args, **kwargs)
940 set_attribute_for_modules(self, "_is_top_level_module", False)
942 try:
--> 943 output = func(self, *args, **kwargs)
944 if is_requested_to_return_tuple or (is_configured_to_return_tuple and is_top_level_module):
945 output = output.to_tuple()
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/qwen2_5_vl.py:2235, in Qwen2_5_VLForConditionalGeneration.forward(self, task_label, input_ids, attention_mask, position_ids, past_key_values, inputs_embeds, labels, use_cache, output_attentions, output_hidden_states, return_dict, pixel_values, pixel_values_videos, image_grid_thw, video_grid_thw, rope_deltas, cache_position, second_per_grid_ts)
2230 output_hidden_states = (
2231 output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
2232 )
2233 return_dict = return_dict if return_dict is not None else self.config.use_return_dict
-> 2235 outputs = self.model(
2236 task_label=task_label,
2237 input_ids=input_ids,
2238 pixel_values=pixel_values,
2239 pixel_values_videos=pixel_values_videos,
2240 image_grid_thw=image_grid_thw,
2241 video_grid_thw=video_grid_thw,
2242 second_per_grid_ts=second_per_grid_ts,
2243 position_ids=position_ids,
2244 attention_mask=attention_mask,
2245 past_key_values=past_key_values,
2246 inputs_embeds=inputs_embeds,
2247 use_cache=use_cache,
2248 output_attentions=output_attentions,
2249 output_hidden_states=output_hidden_states,
2250 return_dict=return_dict,
2251 cache_position=cache_position,
2252 )
2254 hidden_states = outputs[0]
2255 logits = self.lm_head(hidden_states)
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1553, in Module._wrapped_call_impl(self, *args, **kwargs)
1551 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1552 else:
-> 1553 return self._call_impl(*args, **kwargs)
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1562, in Module._call_impl(self, *args, **kwargs)
1557 # If we don't have any hooks, we want to skip the rest of the logic in
1558 # this function, and just call forward.
1559 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
1560 or _global_backward_pre_hooks or _global_backward_hooks
1561 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1562 return forward_call(*args, **kwargs)
1564 try:
1565 result = None
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/qwen2_5_vl.py:2049, in Qwen2_5_VLModel.forward(self, task_label, input_ids, attention_mask, position_ids, past_key_values, inputs_embeds, use_cache, output_attentions, output_hidden_states, return_dict, pixel_values, pixel_values_videos, image_grid_thw, video_grid_thw, rope_deltas, cache_position, second_per_grid_ts)
2046 position_ids = position_ids.add(delta)
2047 position_ids = position_ids.unsqueeze(0).expand(3, -1, -1)
-> 2049 outputs = self.language_model(
2050 task_label=task_label,
2051 input_ids=None,
2052 position_ids=position_ids,
2053 attention_mask=attention_mask,
2054 past_key_values=past_key_values,
2055 inputs_embeds=inputs_embeds,
2056 use_cache=use_cache,
2057 output_attentions=output_attentions,
2058 output_hidden_states=output_hidden_states,
2059 return_dict=True,
2060 cache_position=cache_position,
2061 )
2063 output = Qwen2_5_VLModelOutputWithPast(
2064 last_hidden_state=outputs.last_hidden_state,
2065 past_key_values=outputs.past_key_values,
(...)
2068 rope_deltas=self.rope_deltas,
2069 )
2070 return output if return_dict else output.to_tuple()
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1553, in Module._wrapped_call_impl(self, *args, **kwargs)
1551 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1552 else:
-> 1553 return self._call_impl(*args, **kwargs)
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1562, in Module._call_impl(self, *args, **kwargs)
1557 # If we don't have any hooks, we want to skip the rest of the logic in
1558 # this function, and just call forward.
1559 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
1560 or _global_backward_pre_hooks or _global_backward_hooks
1561 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1562 return forward_call(*args, **kwargs)
1564 try:
1565 result = None
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/qwen2_5_vl.py:1506, in Qwen2_5_VLTextModel.forward(self, task_label, input_ids, attention_mask, position_ids, past_key_values, inputs_embeds, use_cache, output_attentions, output_hidden_states, return_dict, cache_position)
1493 layer_outputs = self._gradient_checkpointing_func(
1494 decoder_layer.call,
1495 task_label,
(...)
1503 position_embeddings,
1504 )
1505 else:
-> 1506 layer_outputs = decoder_layer(
1507 task_label=task_label,
1508 hidden_states=hidden_states,
1509 attention_mask=causal_mask,
1510 position_ids=position_ids,
1511 past_key_value=past_key_values,
1512 output_attentions=output_attentions,
1513 use_cache=use_cache,
1514 cache_position=cache_position,
1515 position_embeddings=position_embeddings,
1516 )
1518 hidden_states = layer_outputs[0]
1520 if use_cache:
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1553, in Module._wrapped_call_impl(self, *args, **kwargs)
1551 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1552 else:
-> 1553 return self._call_impl(*args, **kwargs)
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1562, in Module._call_impl(self, *args, **kwargs)
1557 # If we don't have any hooks, we want to skip the rest of the logic in
1558 # this function, and just call forward.
1559 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
1560 or _global_backward_pre_hooks or _global_backward_hooks
1561 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1562 return forward_call(*args, **kwargs)
1564 try:
1565 result = None
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/qwen2_5_vl.py:1358, in Qwen2_5_VLDecoderLayer.forward(self, task_label, hidden_states, attention_mask, position_ids, past_key_value, output_attentions, use_cache, cache_position, position_embeddings, **kwargs)
1355 hidden_states = self.input_layernorm(hidden_states)
1357 # Self Attention
-> 1358 hidden_states, self_attn_weights, present_key_value = self.self_attn(
1359 task_label=task_label,
1360 hidden_states=hidden_states,
1361 attention_mask=attention_mask,
1362 position_ids=position_ids,
1363 past_key_value=past_key_value,
1364 output_attentions=output_attentions,
1365 use_cache=use_cache,
1366 cache_position=cache_position,
1367 position_embeddings=position_embeddings,
1368 )
1369 hidden_states = residual + hidden_states
1371 # Fully Connected
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1553, in Module._wrapped_call_impl(self, *args, **kwargs)
1551 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1552 else:
-> 1553 return self._call_impl(*args, **kwargs)
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1562, in Module._call_impl(self, *args, **kwargs)
1557 # If we don't have any hooks, we want to skip the rest of the logic in
1558 # this function, and just call forward.
1559 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
1560 or _global_backward_pre_hooks or _global_backward_hooks
1561 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1562 return forward_call(*args, **kwargs)
1564 try:
1565 result = None
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/qwen2_5_vl.py:1242, in Qwen2_5_VLSdpaAttention.forward(self, task_label, hidden_states, attention_mask, position_ids, past_key_value, output_attentions, use_cache, cache_position, position_embeddings)
1228 return super().forward(
1229 task_label=task_label,
1230 hidden_states=hidden_states,
(...)
1237 position_embeddings=position_embeddings,
1238 )
1240 bsz, q_len, _ = hidden_states.size()
-> 1242 query_states = self.q_proj(hidden_states, task_label)
1243 key_states = self.k_proj(hidden_states, task_label)
1244 value_states = self.v_proj(hidden_states, task_label)
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1553, in Module._wrapped_call_impl(self, *args, **kwargs)
1551 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1552 else:
-> 1553 return self._call_impl(*args, **kwargs)
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1562, in Module._call_impl(self, *args, **kwargs)
1557 # If we don't have any hooks, we want to skip the rest of the logic in
1558 # this function, and just call forward.
1559 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
1560 or _global_backward_pre_hooks or _global_backward_hooks
1561 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1562 return forward_call(*args, **kwargs)
1564 try:
1565 result = None
File ~/scratch/.cache/modules/transformers_modules/jinaai/jina-embeddings-v4/50cb06ee0b17a7257c8caf4417c2a7596eb7e5d2/custom_lora_module.py:87, in MultiAdapterLinear.forward(self, x, task_label, *args, **kwargs)
85 dropout = self.lora_dropout[active_adapter]
86 scaling = self.scaling[active_adapter]
---> 87 x = self._cast_input_dtype(x, lora_A.weight.dtype)
88 result = result + lora_B(lora_A(dropout(x))) * scaling
89 else:
File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1729, in Module.getattr(self, name)
1727 if name in modules:
1728 return modules[name]
-> 1729 raise AttributeError(f"'{type(self).name}' object has no attribute '{name}'")
AttributeError: 'MultiAdapterLinear' object has no attribute '_cast_input_dtype'
Hi
@shkwon12
, can you help me reproduce the issue? I tried running model.encode_text("test sample text", task="text-matching")
but didn’t get the error