/ Модель

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

Контекст
16 384 токена
Параметры
1,3 млрд
Лицензия
Своя лицензия
Архитектура
llama · dense
Базовая модель
deepseek-coder-1.3b-instruct
Библиотека
transformers
Опубликована
18 окт 2024

asm2asm-deepseek1.3b-xtokenizer-arm

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

Дообученная модель на базе DeepSeek Coder преобразует ассемблерный код x86 в ARM и помогает изучать различия между архитектурами.

27скачиваний за 30 дней1лайквеса обновлены28 ноя 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

asm2asm-deepseek1.3b-xtokenizer-arm — дообученная Ahmed Heakl модель на базе deepseek-ai/deepseek-coder-1.3b-instruct для преобразования ассемблерного кода x86 в код ARM. Она предназначена для переноса инструкций между архитектурами, обучения различиям между x86 и ARM и помощи при оптимизации кода. Модель содержит 1,3 млрд параметров, построена на плотной архитектуре семейства Llama и использует библиотеку Transformers; максимальная длина контекста — 16 384 токена. Поддерживает генерацию текста и работает с кодом в текстовом виде.

В карточке указано, что качество может снижаться на инструкциях, отличающихся от обучающих данных, и на сложных или нетипичных фрагментах. Ошибки в сгенерированном ARM-коде способны изменить его поведение, поэтому результат следует проверять. Для обучающих данных приведено лишь краткое уведомление, а лицензия обозначена как other без дополнительных условий в предоставленных данных.

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

  • перевод фрагментов ассемблера x86 в ARM
  • подготовка чернового ARM-кода при портировании программ
  • изучение соответствий между инструкциями x86 и ARM

Ограничения

Модель может хуже работать с инструкциями вне обучающего распределения, сложным или необычным ассемблерным кодом; сгенерированный ARM-код нужно проверять на функциональные ошибки. Сведения об обучающих данных ограничены, а конкретные условия лицензии other в предоставленных материалах не раскрыты.

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

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

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

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

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

Открыть на Hugging Face

CISC-to-RISC

A fine-tuned version of deepseek-ai/deepseek-coder-1.3b-instruct specialized in converting x86 assembly code to ARM assembly.

Model Overview

asm2asm-deepseek1.3b-xtokenizer-arm is designed to assist developers in converting x86 assembly instructions to ARM assembly. Leveraging the capabilities of the base model, this fine-tuned variant enhances accuracy and efficiency in assembly code transpilation tasks.

Intended Use

This model is intended for:

  • Assembly Code Conversion: Assisting developers in translating x86 assembly instructions to ARM architecture.
  • Educational Purposes: Helping learners understand the differences and translation mechanisms between x86 and ARM assembly.
  • Code Optimization: Facilitating optimization processes by converting and refining assembly code across architectures.

Limitations

  • Dataset Specificity: The model is fine-tuned on a specific dataset, which may limit its performance on assembly instructions outside the training distribution.
  • Complex Instructions: May struggle with highly complex or unconventional assembly instructions not well-represented in the training data.
  • Error Propagation: Inaccuracies in the generated ARM code can lead to functional discrepancies or bugs if not reviewed.

Training Data

Detailed information about the training dataset is required.

Training Procedure

Training Hyperparameters

The model was trained with the following hyperparameters:

  • Learning Rate: 0.0002
  • Training Batch Size: 1
  • Evaluation Batch Size: 8
  • Seed: 42
  • Gradient Accumulation Steps: 4
  • Total Training Batch Size: 4
  • Optimizer: Adam (betas=(0.9, 0.999), epsilon=1e-08)
  • Learning Rate Scheduler: Linear
  • Number of Epochs: 2

Usage

All models and datasets are available on Hugging Face. Below is an example of how to use the best model for converting x86 assembly to ARM.

Inference Code

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from tqdm import tqdm

# Replace 'hf_token' with your Hugging Face token
hf_token = "your_hf_token_here"

model_name = "ahmedheakl/asm2asm-deepseek1.3b-xtokenizer-arm"

instruction = """<|begin▁of▁sentence|>You are a helpful coding assistant specialized in converting from x86 to ARM assembly.
### Instruction:
Convert this x86 assembly into ARM
```asm
{asm_x86}
"```"
### Response:
```asm
{asm_arm}
"""

# Load the model
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    token=hf_token,
    device_map="auto",
    torch_dtype=torch.bfloat16,
)

model.config.use_cache = True

# Load the tokenizer
tokenizer = AutoTokenizer.from_pretrained(
    model_name,
    trust_remote_code=True,
    token=hf_token,
)

def inference(asm_x86: str) -> str:
    prompt = instruction.format(asm_x86=asm_x86, asm_arm="")
    inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
    generated_ids = model.generate(
        **inputs,
        use_cache=True,
        num_return_sequences=1,
        max_new_tokens=8000,
        do_sample=False,
        num_beams=4,
        eos_token_id=tokenizer.eos_token_id,
        pad_token_id=tokenizer.pad_token_id,
    )
    outputs = tokenizer.batch_decode(generated_ids)[0]
    torch.cuda.empty_cache()
    torch.cuda.synchronize()
    return outputs.split("```asm\n")[-1].split(f"```{tokenizer.eos_token}")[0]

# Example usage
x86 = "DWORD PTR -248[rbp] movsx rdx"
converted_arm = inference(x86)
print(converted_arm)

Experiments and Results

ModelAverage Edit Distance (↓)Exact Match (↑)Test Accuracy (↑)
GPT4o12960%8.18%
DeepSeekCoder2-16B16330%7.36%
Yi-Coder-9B16530%6.33%
Yi-Coder-1.5B27516.98%49.69%
DeepSeekCoder-1.3B10745.91%77.23%
DeepSeekCoder-1.3B-xTokenizer-int411946.54%72.96%
DeepSeekCoder-1.3B-xTokenizer-int89649.69%75.47%
DeepSeekCoder-1.3B-xTokenizer16550.32%79.25%

Table: Comparison of models' performance on the x86 to ARM transpilation task, measured by Edit Distance (lower is better), Exact Match (higher is better), and Test Accuracy (higher is better). The top section lists pre-existing models, while the bottom section lists models trained by us. The best results in each metric are highlighted in bold.

Please see paper & code for more information:

Citations

If you use this model in your research, please cite it as follows:

@article{heakl2024cisc,
  title={From CISC to RISC: language-model guided assembly transpilation},
  author={Heakl, Ahmed and Abi, Chaimaa and Hossam, Rania and Mahmoud, Abdulrahman},
  journal={arXiv preprint arXiv:2411.16341},
  year={2024}
}

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
LlamaForCausalLM
Ревизия весов
6d9f71e

0 моделей