MCPcopy Create free account
hub / github.com/andrewkchan/deepseek.cpp / _copy_embedding

Method _copy_embedding

src/infer.cpp:1217–1263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1215template void BlockMLA::_attention_impl<block_q3_K>(InferenceState&, int, int, int, int) const;
1216
1217void Model::_copy_embedding(InferenceState& s, int token) {
1218 const Config& c = *config;
1219 switch (c.weight_quant) {
1220 case Quant::F32: {
1221 float* emb = static_cast<float*>(token_embedding_table->data);
1222 for (int i = 0; i < c.dim; ++i) {
1223 s.x()[i] = emb[token * c.dim + i];
1224 }
1225 break;
1226 }
1227 case Quant::F16: {
1228 f16_t* emb = static_cast<f16_t*>(token_embedding_table->data);
1229 for (int i = 0; i < c.dim; i+=1) {
1230 s.x()[i] = half_to_float(emb[token * c.dim + i]);
1231 }
1232 break;
1233 }
1234 case Quant::F8E5M2: {
1235 f8e5m2_t* emb = static_cast<f8e5m2_t*>(token_embedding_table->data);
1236 float* emb_scale = static_cast<float*>(token_embedding_scale->data);
1237 int* block_size = config->block_size.data();
1238 int scale_num_cols = (c.dim + block_size[1] - 1) / block_size[1];
1239 for (int i = 0; i < c.dim; i+=1) {
1240 int scale_i = token / block_size[0];
1241 int scale_j = i / block_size[1];
1242 float scale = emb_scale[scale_i * scale_num_cols + scale_j];
1243 s.x()[i] = float8e5m2_to_float(emb[token * c.dim + i]) * scale;
1244 }
1245 break;
1246 }
1247 case Quant::Q2_K: {
1248 block_q2_K* emb = static_cast<block_q2_K*>(token_embedding_table->data);
1249 int blocks_per_row = c.dim / QK_K;
1250 dequantize_row_q2_K(emb + token * blocks_per_row, s.x(), c.dim);
1251 break;
1252 }
1253 case Quant::Q3_K: {
1254 block_q3_K* emb = static_cast<block_q3_K*>(token_embedding_table->data);
1255 int blocks_per_row = c.dim / QK_K;
1256 dequantize_row_q3_K(emb + token * blocks_per_row, s.x(), c.dim);
1257 break;
1258 }
1259 default: {
1260 assert(false && "unsupported weight quantization");
1261 }
1262 }
1263}
1264
1265void Model::_forward_cpu(InferenceState& s, int token, int pos, InferenceMode mode) {
1266 const Config& c = *config;

Callers

nothing calls this directly

Calls 5

half_to_floatFunction · 0.85
float8e5m2_to_floatFunction · 0.85
dequantize_row_q2_KFunction · 0.85
dequantize_row_q3_KFunction · 0.85
xMethod · 0.80

Tested by

no test coverage detected