Wasmachine0629 commited on
Commit
3a74cef
·
verified ·
1 Parent(s): 39b0652

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +13 -4
README.md CHANGED
@@ -104,7 +104,16 @@ finetuning: 4 hours on 1 NVIDIA H200
104
  The model outputs embeddings of size 768 that can be compared using cosine similarity
105
 
106
  # Data
107
- TODO: how did we get the data?
 
 
 
 
 
 
 
 
 
108
 
109
  **Total amount of functions per architecture**
110
 
@@ -156,8 +165,8 @@ to reduce token explosion caused by raw numeric values. These numerical values a
156
  4096 would be 2 ** 12, so #0x2^c, so would 6000, but 9000 would be #0x2^d. As a consequence, small numbers are distinguishable
157
  in the vocabulary list, but bigger numbers get one batched representation.
158
 
159
- Finally, jump tokens are normalised to be relative `JUMP_ADDR_*` tokens (* being the line number of the jump adress in the given
160
- function, rather than in the full CFG) CHECK KLOPT DIT?
161
 
162
 
163
 
@@ -171,4 +180,4 @@ but it's also very strict, which is why we used it combined with MRR.
171
 
172
  |model|ARM64 mrr|ARM64 acc|AMD64 mrr|AMD64 acc|RISC-V mrr|RISC-V acc|I386 mrr|I386 acc|crosslingual mrr|crosslingual acc|
173
  |-----|---------|---------|---------|---------|----------|----------|--------|--------|----------------|----------------|
174
- |Multilingual-ASMBERT|0.761845832197267|0.685|0.8481566008780298|0.803|0.6150729328823104|0.514|0.6600633426585386|0.575|0.6314267393170043|0.53|
 
104
  The model outputs embeddings of size 768 that can be compared using cosine similarity
105
 
106
  # Data
107
+ The dataset is built on the official [Debian Repository](https://wiki.debian.org/DebianRepository). To obtain multiple families of
108
+ assembly, we used `apt` to cross-build the same source package to multiple architectures. The idea is that this gives us
109
+ the same functions for all four architectures. For all four architectures, these functions are compiled with different optimisation:
110
+ O0, O1, O2, O3, Os and manually selected set with advanced instructions further referenced here as Oc for Optimised-Custom.
111
+ This results in a maximum of 24 (6 optimisation * 4 architectures) different functions
112
+ which are semantically similar. (i.e. they represent the same functionality but are written differently)
113
+ In practise, it was much easier to obtain amd64 functions than riscv64 functions. Thus, not all functions have 24 semantically similar functions.
114
+
115
+ The dataset is split into a train, test and an evaluation set. This in done on source package, so all binaries and functions belonging to one source package are part of
116
+ either the train or the test set, not both.
117
 
118
  **Total amount of functions per architecture**
119
 
 
165
  4096 would be 2 ** 12, so #0x2^c, so would 6000, but 9000 would be #0x2^d. As a consequence, small numbers are distinguishable
166
  in the vocabulary list, but bigger numbers get one batched representation.
167
 
168
+ Finally, jump tokens are normalised to be relative `JUMP_ADDR_*` tokens. (* being the line number of the jump adress in the given
169
+ function, rather than in the full CFG)
170
 
171
 
172
 
 
180
 
181
  |model|ARM64 mrr|ARM64 acc|AMD64 mrr|AMD64 acc|RISC-V mrr|RISC-V acc|I386 mrr|I386 acc|crosslingual mrr|crosslingual acc|
182
  |-----|---------|---------|---------|---------|----------|----------|--------|--------|----------------|----------------|
183
+ |Multilingual-ASMBERT|0.762|0.685|0.848|0.803|0.615|0.514|0.660|0.575|0.631|0.530|