Downloads · 30 days
37
5% of all-time downloads
ahmedheakl/asm2asm-deepseek1.3b-risc
asm2asm-deepseek1.3b-risc is a text generation model from ahmedheakl. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as other.
A fine-tuned version of deepseek-ai/deepseek-coder-1.3b-instruct specialized in converting x86 assembly code to RISCv5-64 assembly.
Downloads · 30 days
37
5% of all-time downloads
All-time downloads
716
Public
Parameters
1.3B
5.4 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors2.7 GB · 100%
From the Hugging Face model README
A fine-tuned version of deepseek-ai/deepseek-coder-1.3b-instruct specialized in converting x86 assembly code to RISCv5-64 assembly.
asm2asm-deepseek1.3b-xtokenizer-risc is designed to assist developers in converting x86 assembly instructions to RISCv5-64 assembly. Leveraging the capabilities of the base model, this fine-tuned variant enhances accuracy and efficiency in assembly code transpilation tasks.
This model is intended for:
The following hyperparameters were used during training:
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 RISCv5-64.
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-risc"
instruction = """<|begin▁of▁sentence|>You are a helpful coding assistant assistant on converting from x86 to RISCv64 assembly.
### Instruction:
Convert this x86 assembly into RISCv64
```asm
{asm_x86}
"```"
### Response:
```asm
{asm_risc}
"""
model = AutoModelForCausalLM.from_pretrained(
model_name,
token=hf_token,
device_map="auto",
torch_dtype=torch.bfloat16,
)
model.config.use_cache = True
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_risc="")
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=8,
# temperature=0.7,
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]
x86 = "DWORD PTR -248[rbp] movsx rdx"
converted_risc = inference(x86)
print(converted_risc)
| Model | Average Edit Distance (↓) | Exact Match (↑) | Test Accuracy (↑) |
|---|---|---|---|
| GPT4o | 1296 | 0% | 8.18% |
| DeepSeekCoder2-16B | 1633 | 0% | 7.36% |
| Yi-Coder-9B | 1653 | 0% | 6.33% |
| Yi-Coder-1.5B | 275 | 16.98% | 49.69% |
| DeepSeekCoder-1.3B | 107 | 45.91% | 77.23% |
| DeepSeekCoder-1.3B-xTokenizer-int4 | 119 | 46.54% | 72.96% |
| DeepSeekCoder-1.3B-xTokenizer-int8 | 96 | 49.69% | 75.47% |
| DeepSeekCoder-1.3B-xTokenizer | 165 | 50.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.
| Model | Average Edit Distance (↓) | Exact Match (↑) | Test Accuracy (↑) |
|---|---|---|---|
| GPT4o | 1293 | 0% | 7.55% |
| DeepSeekCoder2-16B | 1483 | 0% | 6.29% |
| DeepSeekCoder-1.3B-xTokenizer-int4 | 112 | 14.47% | 68.55% |
| DeepSeekCoder-1.3B-xTokenizer-int8 | 31 | 69.81% | 88.05% |
| DeepSeekCoder-1.3B-xTokenizer | 27 | 69.81% | 88.68% |
Table: Comparison of models' performance on the x86 to RISCv64 transpilation task. The top section lists pre-existing models, while the bottom section lists models trained by us.
Please see paper & code for more information:
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}
}