sima_utils.transformer.prompt_template
======================================
.. py:module:: sima_utils.transformer.prompt_template
Attributes
----------
.. autoapisummary::
sima_utils.transformer.prompt_template.DEFAULT_IMAGE_PLACEHOLDER_TOKEN_ID
sima_utils.transformer.prompt_template.VLM_PROMPT_TEMPLATE
sima_utils.transformer.prompt_template.arch
Classes
-------
.. autoapisummary::
sima_utils.transformer.prompt_template.PromptFormatter
sima_utils.transformer.prompt_template.Llama2PromptFormatter
sima_utils.transformer.prompt_template.Llama3PromptFormatter
sima_utils.transformer.prompt_template.LlavaPromptFormatter
sima_utils.transformer.prompt_template.PaliGemmaPromptFormatter
sima_utils.transformer.prompt_template.GemmaPromptFormatter
sima_utils.transformer.prompt_template.Phi3PromptFormatter
Functions
---------
.. autoapisummary::
sima_utils.transformer.prompt_template.multimodal_concat
Module Contents
---------------
.. py:data:: DEFAULT_IMAGE_PLACEHOLDER_TOKEN_ID
:value: -200
.. py:data:: VLM_PROMPT_TEMPLATE
.. py:function:: multimodal_concat(text_token_ids: numpy.ndarray, vision_proj: numpy.ndarray, embed_weight: numpy.ndarray) -> numpy.ndarray
Combine text and vision embedding tensors.
:param text_token_ids: The text token ids with image placeholder.
:type text_token_ids: np.ndarray
:param vision_proj: The vision projection tensor.
:type vision_proj: np.ndarray
:param embed_weight: The embedding weight matrix.
:type embed_weight: np.ndarray
:returns: A tensor with combined text and vision embeddings.
.. py:class:: PromptFormatter(vlm_arch: str, system_message: str | None = None)
Prompt formatter for VLM.
.. py:attribute:: vlm_arch
:type: str
.. py:attribute:: system_message
:type: str | None
.. py:attribute:: image_placeholder_id
:type: int
.. py:method:: set_system_message(msg: str)
.. py:method:: formatted_prompt(query: str, has_image: bool = False) -> list[str]
Format a query according to the prompt template.
:param query: A text part of a user query.
:param has_image: Whether the prompt includes a image placeholder token.
:returns: The formatted query as a list of strings.
.. py:method:: tokenize_prompt(tokenizer: sima_utils.transformer.llm_tokenizer.LlmTokenizer, messages: list) -> numpy.ndarray
Tokenize a formatted prompt.
:param tokenizer: The object of tokenizer needed.
:type tokenizer: LlmTokenizer
:param messages: The list of formatted query messages.
:type messages: list
:returns: An array of token ids with possible image placeholders.
The first dimension indicates batch, the number of queries.
.. py:class:: Llama2PromptFormatter(vlm_arch: str, system_message: str | None = None)
LLAMA 2 prompt formatter.
.. py:attribute:: B_INST
:type: str
:value: '[INST]'
.. py:attribute:: E_INST
:type: str
:value: '[/INST]'
.. py:attribute:: B_SYS
:type: str
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""<>
"""
.. raw:: html
.. py:attribute:: E_SYS
:type: str
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
<>
"""
.. raw:: html
.. py:method:: formatted_prompt(query: str, has_image: bool = False) -> list[str]
Format a query according to the prompt template.
:param query: A text part of a user query.
:param has_image: Whether the prompt includes a image placeholder token.
:returns: The formatted query as a list of strings.
.. py:method:: tokenize_prompt(tokenizer: sima_utils.transformer.llm_tokenizer.LlmTokenizer, messages: list[list[str]]) -> numpy.ndarray
Tokenize a formatted prompt for LLAMA2.
.. py:class:: Llama3PromptFormatter(vlm_arch: str, system_message: str | None = None)
LLAMA 3 prompt formatter.
.. py:method:: tokenize_prompt(tokenizer: sima_utils.transformer.llm_tokenizer.LlmTokenizer, messages: list[list[str]]) -> numpy.ndarray
Tokenize a formatted prompt for LLAMA3.
.. py:class:: LlavaPromptFormatter(vlm_arch: str, system_message: str | None = None)
LLAVA prompt formatter.
.. py:method:: tokenize_prompt(tokenizer: sima_utils.transformer.llm_tokenizer.LlmTokenizer, messages: list[list[str]]) -> numpy.ndarray
Tokenize a formatted prompt for LLAVA.
.. py:class:: PaliGemmaPromptFormatter(vlm_arch: str, system_message: str | None = None)
PaliGemma prompt formatter.
.. py:method:: tokenize_prompt(tokenizer: sima_utils.transformer.llm_tokenizer.LlmTokenizer, messages: list[list[str]]) -> numpy.ndarray
Tokenize a formatted prompt for PaliGemma.
Template: + + + <
>
.. py:class:: GemmaPromptFormatter(vlm_arch: str, system_message: str | None = None)
GEMMA prompt formatter.
.. py:attribute:: boi_id
:type: int
.. py:attribute:: eoi_id
:type: int
.. py:method:: tokenize_prompt(tokenizer: sima_utils.transformer.llm_tokenizer.LlmTokenizer, messages: list[list[str]]) -> numpy.ndarray
Tokenize a formatted prompt for GEMMA.
.. py:class:: Phi3PromptFormatter(vlm_arch: str, system_message: str | None = None)
PHI 3 prompt formatter.
Chat format (https://huggingface.co/microsoft/Phi-3.5-mini-instruct)
<|system|>
You are a helpful assistant.<|end|>
<|user|>
How to explain Internet for a medieval knight?<|end|>
<|assistant|>
.. py:attribute:: B_SYS
:type: str
:value: '<|system|>'
.. py:attribute:: B_USER
:type: str
:value: '<|user|>'
.. py:attribute:: B_ASSISTANT
:type: str
:value: '<|assistant|>'
.. py:attribute:: END
:type: str
:value: '<|end|>'
.. py:method:: formatted_prompt(query: str, has_image: bool = False) -> list[str]
Format a query according to the prompt template.
:param query: A text part of a user query.
:param has_image: Whether the prompt includes a image placeholder token.
:returns: The formatted query as a list of strings.
.. py:method:: tokenize_prompt(tokenizer: sima_utils.transformer.llm_tokenizer.LlmTokenizer, messages: list[list[str]]) -> numpy.ndarray
Tokenize a formatted prompt for PHI3.
.. py:data:: arch