/ Модель

Характеристики

Контекст
4 096 токенов
Параметры
12,8 млрд
Размер весов
16 ГБ
Лицензия
Apache 2.0
Архитектура
molmo · dense
Базовая модель
Molmo-7B-D-0924
Библиотека
transformers
Опубликована
3 апр 2025

ELAM-7B

Генерация текстаТекст → текст3 профессии

ELAM-7B анализирует снимки автомобильных интерфейсов, определяет координаты элементов для действий и проверяет ожидаемое состояние интерфейса.

79скачиваний за 30 дней0лайковвеса обновлены12 мая 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

ELAM-7B (Evaluative Large Action Model) — зрительно-языковая модель на архитектуре Molmo, разработанная Sparks Solutions и дообученная на базе allenai/Molmo-7B-D-0924. Модель предназначена для тестирования автомобильных интерфейсов по снимкам экрана: она находит элементы управления по текстовым инструкциям, возвращает координаты нажатия и проверяет, соответствует ли интерфейс заданному ожиданию.

Для дообучения использованы 17 708 инструкций и оценок для 6 230 изображений автомобильных интерфейсов с немецким и английским текстом; обучающие запросы были на английском языке. В сценарии проверки ожиданий модель выдаёт PASSED или FAILED и координаты соответствующего элемента. Контекст составляет 4096 токенов, размер модели по метаданным — 12,8 млрд параметров. Модель работает с изображениями и текстом, а её основная область применения — автоматизированное тестирование автомобильных пользовательских интерфейсов.

ELAM-7B опубликована под лицензией Apache-2.0. Результаты обучения и оценки относятся к автомобильным интерфейсам с немецким и английским содержимым; качество на других типах интерфейсов и языках не подтверждено. В README приведена таблица AutomotiveUI-Bench-4K, но её данные представлены не полностью.

Сценарии применения

  • поиск координат кнопки или элемента по инструкции на снимке автомобильного интерфейса
  • автоматизация нажатий при тестировании автомобильных экранов
  • проверка включённого или выключенного состояния переключателя по ожиданию
  • оценка соответствия автомобильного интерфейса заданному ожидаемому результату

Ограничения

Обучение ориентировано на автомобильные интерфейсы с немецким и английским содержимым, а запросы обучения были на английском. README не даёт полной таблицы результатов бенчмарка и не подтверждает качество на других доменах или языках.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

ELAM-7B

ELAM (Evaluative Large Action Model) is a Molmo 7B-D-based LAM (Large Action Model) that is also able to evaluate user expectations on screenshots of user interfaces. It was specifically fine-tuned on 17,708 instructions and evaluations for 6,230 automotive UI images. The images contained German and English text. All training prompts were English. German content was either translated or quoted directly.

The evaluation dataset AutomotiveUI-Bench-4K is available on Hugging Face.

Results

AutomotiveUI-Bench-4K

ModelTest Action GroundingExpected Result GroundingExpected Result Evaluation
InternVL2.5-8B26.65.764.8
TinyClick61.054.6-
UGround-V1-7B (Qwen2-VL)69.455.0-
Molmo-7B-D-092471.371.466.9
LAM-270M (TinyClick)73.959.9-
ELAM-7B (Molmo)87.677.578.2

Quick-Start

conda create -n elam python=3.10 -y
conda activate elam
pip install datasets==3.5.0 einops==0.8.1 torchvision==0.20.1 accelerate==1.6.0
pip install transformers==4.48.2
import re

import torch
from PIL import Image
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfig

# Load processor
model_name = "sparks-solutions/ELAM-7B"
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True, torch_dtype="bfloat16", device_map="auto")

# Load model
model = AutoModelForCausalLM.from_pretrained(
    model_name, trust_remote_code=True, torch_dtype="bfloat16", device_map="auto"
)


def preprocess_elam_prompt(user_request: str, label_class: str):
    """Apply ELAM prompt template depending on class."""
    if label_class == "Expected Result":
        return f"Evaluate this statement about the image:\n'{user_request}'\nThink step by step, conclude whether the evaluation is 'PASSED' or 'FAILED' and point to the UI element that corresponds to this evaluation."
    elif label_class == "Test Action":
        return f"Identify and point to the UI element that corresponds to this test action:\n{user_request}"


def postprocess_response_elam(response: str):
    """Parse Molmo-style point coordinates from string and return tuple of floats in [0-1]."""
    pattern = r'<point x="(?P<x>\d+\.\d+)" y="(?P<y>\d+\.\d+)"'
    match = re.search(pattern, response)
    if match:
        x_coord_raw = float(match.group("x"))
        y_coord_raw = float(match.group("y"))
        x_coord = x_coord_raw / 100
        y_coord = y_coord_raw / 100
        return [x_coord, y_coord]
    else:
        return [-1, -1]

Two prompt types were fine-tuned for UI testing:

  1. Test Action: These prompts take an instruction (e.g., "tap music not in bottom navigation bar") and return the corresponding tap coordinates.
  2. Expected Results: These prompts take an expectation (e.g., "notification toggle switch is disabled") and return "PASSED" or "FAILED" along with coordinates of the relevant UI element.

image_path = "path/to/your/ui/image"
user_request = "Tap home button"  # or "The home icon is white"
request_type = "Test Action"  # or "Expected Result"


image = Image.open(image_path)

elam_prompt = preprocess_elam_prompt(user_request, request_type)

inputs = processor.process(
    images=[image],
    text=elam_prompt,
)

# Move inputs to the correct device and make a batch of size 1, cast to bfloat16
inputs_bfloat16 = {}
for k, v in inputs.items():
    if v.dtype == torch.float32:
        inputs_bfloat16[k] = v.to(model.device).to(torch.bfloat16).unsqueeze(0)
    else:
        inputs_bfloat16[k] = v.to(model.device).unsqueeze(0)

inputs = inputs_bfloat16  # Replace original inputs with the correctly typed inputs

# Generate output
output = model.generate_from_batch(
    inputs, GenerationConfig(max_new_tokens=2048, stop_strings="<|endoftext|>"), tokenizer=processor.tokenizer
)

# Only get generated tokens; decode them to text
generated_tokens = output[0, inputs["input_ids"].size(1) :]
response = processor.tokenizer.decode(generated_tokens, skip_special_tokens=True)
coordinates = postprocess_response_elam(response)

# Print outputs
print(f"ELAM response: {response}")
print(f"Got coordinates: {coordinates}")

Citation

If you find ELAM useful in your research, please cite the following paper:

@misc{ernhofer2025leveragingvisionlanguagemodelsvisual,
      title={Leveraging Vision-Language Models for Visual Grounding and Analysis of Automotive UI}, 
      author={Benjamin Raphael Ernhofer and Daniil Prokhorov and Jannica Langner and Dominik Bollmann},
      year={2025},
      eprint={2505.05895},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2505.05895}, 
}

Acknowledgements

Funding

This work was supported by German BMBF within the scope of project "KI4BoardNet".

Models and Code

  • ELAM is based on Molmo by Allen Institute for AI.
  • Training was conducted using ms-swift by ModelScope.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
MolmoForCausalLM
Ревизия весов
5d15940

0 моделей