/ Модель

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

Контекст
2 048 токенов
Параметры
139 млн
Лицензия
MIT
Архитектура
roformer · dense
Опубликована
29 фев 2024

clap-asm

ЭмбеддингиТекст → embedding3 профессии

CLAP-ASM извлекает признаки из ассемблерного кода для классификации алгоритмов и других задач анализа бинарного кода.

180скачиваний за 30 дней22лайкавеса обновлены4 мар 2024

Бенчмарки

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

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

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

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

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

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

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

CLAP-ASM — модель семейства CLAP, разработанная для анализа ассемблерного кода. Она обучена сопоставлять представления бинарного кода с описаниями на естественном языке, чтобы переносить знания на новые задачи анализа без дополнительного обучения или с небольшим числом примеров. Модель содержит 139 млн параметров, использует архитектуру RoFormer и выдаёт признаки для последующей классификации или сравнения.

Модель предназначена для классификации алгоритмов сортировки, выявления вредоносного кода и распознавания криптографических алгоритмов по фрагментам ассемблерного кода. В README описаны сценарии zero-shot-классификации с текстовыми подсказками. Репозиторий предоставляет веса в формате safetensors; лицензия — MIT. Карточка указывает контекст 2048 токенов.

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

  • классификация алгоритмов сортировки по ассемблерному коду
  • выявление вредоносного кода
  • распознавание криптографических алгоритмов
  • zero-shot-классификация фрагментов бинарного кода по текстовым описаниям
  • анализ ассемблерного кода с небольшим числом размеченных примеров

Ограничения

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

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

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

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

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

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

Открыть на Hugging Face

About

CLAP (Contrastive Language-Assembly Pre-training) is a framework that learns binary code representations through natural language supervision. By aligning binary code with natural language explanations, it improves analysis performance in few-shot and zero-shot scenarios. Utilizing a dataset engine capable of automatically generating 195 million pairs of code snippets and their descriptions, CLAP offers a method with exceptional transferability in the field of binary code analysis. Our goal is to provide an effective tool for researchers and practitioners in binary code analysis, with our models accessible on the Hugging Face Model Hub.

News

  • [2024/2/29] CLAP is available on Hugging Face Model Hub (clap-asm and clap-text).
  • [2024/2/28] CLAP is now on ArXiv.

QuickStart

This document will help you set up and start using the CLAP model for various tasks, including fine-grained classification of sorting algorithms, malware, and cryptographic algorithms without any further training.

Requirements

Ensure you have Python and PyTorch installed on your system. Then, install the Transformers library using pip:

pip install transformers

Preparing Tokenizers and Models

Import necessary libraries and initialize the model and tokenizers:

import torch
from transformers import AutoModel, AutoTokenizer

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

asm_tokenizer = AutoTokenizer.from_pretrained("hustcw/clap-asm", trust_remote_code=True)
text_tokenizer = AutoTokenizer.from_pretrained("hustcw/clap-text", trust_remote_code=True)
asm_encoder = AutoModel.from_pretrained("hustcw/clap-asm", trust_remote_code=True).to(device)
text_encoder = AutoModel.from_pretrained("hustcw/clap-text", trust_remote_code=True).to(device)

Example Use Cases

Fine-Grained Sorting Algorithm Classification (Zero-Shot)

  1. Load your assembly (asm) code dataset. For demonstration, we use a JSON file containing assembly code snippets related to bubble sort:
with open("./CaseStudy/bubblesort.json") as fp:
    asm = json.load(fp)
  1. Define your classification prompts:
prompts = [
"This is a function related to bubble sort",
"This is a function related to selection sort",
...
]
  1. Encode the assembly code and prompts, then perform classification:
# Encode assembly code
asm_input = asm_tokenizer([asm], padding=True, return_tensors="pt").to(device)
asm_embedding = asm_encoder(**asm_input)

# Encode prompts
text_input = text_tokenizer(prompts, return_tensors='pt').to(device)
text_embeddings = text_encoder(**text_input)

# Classification
logits = torch.einsum("nc,ck->nk", [asm_embedding.last_hidden_state, text_embeddings.last_hidden_state.T])
preds = torch.softmax(logits / 0.07, dim=1).squeeze(0).tolist()

# Output predictions
for i, prompt in enumerate(prompts):
    print(f"Probability: {preds[i]*100:.3f}%, Text: {prompt}")

Repeat the process for any other classification tasks you want, such as malware classification and cryptographic algorithm identification, by loading the respective datasets and defining the relevant natural language prompts.

Citation

If this work is helpful for your research, please consider giving a star 🌟 and citing our work.

@misc{wang2024clap,
title={CLAP: Learning Transferable Binary Code Representations with Natural Language Supervision},
author={Hao Wang and Zeyu Gao and Chao Zhang and Zihan Sha and Mingyang Sun and Yuchen Zhou and Wenyu Zhu and Wenju Sun and Han Qiu and Xi Xiao},
year={2024},
eprint={2402.16928},
archivePrefix={arXiv},
primaryClass={cs.SE}
}

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

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

GPU в ailist

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

Можно запустить

Подбираем GPU…

Класс архитектуры
AsmEncoder
Ревизия весов
620f4be

0 моделей