add virtual function

This commit is contained in:
Xuan Son Nguyen 2024-12-04 19:18:56 +01:00
parent d2419b3255
commit ea1be7f8ac
2 changed files with 38 additions and 25 deletions

View file

@ -1592,13 +1592,13 @@ struct server_context {
const double t_save_ms = (t_end - t_start) / 1000.0; const double t_save_ms = (t_end - t_start) / 1000.0;
server_task_result_slot_save_load result; server_task_result_slot_save_load result;
result.id = task.id; result.id = task.id;
result.id_slot = id_slot; result.id_slot = id_slot;
result.filename = filename; result.filename = filename;
result.is_save = true; result.is_save = true;
result.n_saved = token_count; result.n_tokens = token_count;
result.n_written = nwrite; result.n_bytes = nwrite;
result.t_ms = t_save_ms; result.t_ms = t_save_ms;
queue_results.send(result); queue_results.send(result);
} break; } break;
case SERVER_TASK_TYPE_SLOT_RESTORE: case SERVER_TASK_TYPE_SLOT_RESTORE:
@ -1635,13 +1635,13 @@ struct server_context {
const double t_restore_ms = (t_end - t_start) / 1000.0; const double t_restore_ms = (t_end - t_start) / 1000.0;
server_task_result_slot_save_load result; server_task_result_slot_save_load result;
result.id = task.id; result.id = task.id;
result.id_slot = id_slot; result.id_slot = id_slot;
result.filename = filename; result.filename = filename;
result.is_save = false; result.is_save = false;
result.n_restored = token_count; result.n_tokens = token_count;
result.n_read = nread; result.n_bytes = nread;
result.t_ms = t_restore_ms; result.t_ms = t_restore_ms;
queue_results.send(result); queue_results.send(result);
} break; } break;
case SERVER_TASK_TYPE_SLOT_ERASE: case SERVER_TASK_TYPE_SLOT_ERASE:

View file

@ -16,7 +16,7 @@
using json = nlohmann::ordered_json; using json = nlohmann::ordered_json;
// cast a shared_ptr to a specific type using copy constructor // cast a shared_ptr to a specific type using copy constructor
#define copy_cast_ptr(TYPEOUT, ptr) *(static_cast<TYPEOUT*>(ptr.get())) #define copy_cast_ptr(TYPEOUT, ptr) *(static_cast<TYPEOUT*>(ptr.get()));
enum stop_type { enum stop_type {
STOP_TYPE_NONE, STOP_TYPE_NONE,
@ -210,6 +210,7 @@ struct server_task_result {
int id_slot = -1; int id_slot = -1;
server_task_result() = default; server_task_result() = default;
server_task_result(result_type type) : type(type) {} server_task_result(result_type type) : type(type) {}
virtual ~server_task_result() = default;
}; };
inline std::string stop_type_to_str(stop_type type) { inline std::string stop_type_to_str(stop_type type) {
@ -276,6 +277,8 @@ struct server_task_result_cmpl_final : server_task_result {
static server_task_result_cmpl_final from_ptr(std::unique_ptr<server_task_result> & result_ptr) { static server_task_result_cmpl_final from_ptr(std::unique_ptr<server_task_result> & result_ptr) {
return copy_cast_ptr(server_task_result_cmpl_final, result_ptr); return copy_cast_ptr(server_task_result_cmpl_final, result_ptr);
} }
virtual ~server_task_result_cmpl_final() = default;
}; };
struct server_task_result_cmpl_partial : server_task_result { struct server_task_result_cmpl_partial : server_task_result {
@ -316,6 +319,8 @@ struct server_task_result_cmpl_partial : server_task_result {
static server_task_result_cmpl_partial from_ptr(std::unique_ptr<server_task_result> & result_ptr) { static server_task_result_cmpl_partial from_ptr(std::unique_ptr<server_task_result> & result_ptr) {
return copy_cast_ptr(server_task_result_cmpl_partial, result_ptr); return copy_cast_ptr(server_task_result_cmpl_partial, result_ptr);
} }
virtual ~server_task_result_cmpl_partial() = default;
}; };
struct server_task_result_embd : server_task_result { struct server_task_result_embd : server_task_result {
@ -334,6 +339,8 @@ struct server_task_result_embd : server_task_result {
static server_task_result_embd from_ptr(std::unique_ptr<server_task_result> & result_ptr) { static server_task_result_embd from_ptr(std::unique_ptr<server_task_result> & result_ptr) {
return copy_cast_ptr(server_task_result_embd, result_ptr); return copy_cast_ptr(server_task_result_embd, result_ptr);
} }
virtual ~server_task_result_embd() = default;
}; };
struct server_task_result_rerank : server_task_result { struct server_task_result_rerank : server_task_result {
@ -351,6 +358,8 @@ struct server_task_result_rerank : server_task_result {
static server_task_result_rerank from_ptr(std::unique_ptr<server_task_result> & result_ptr) { static server_task_result_rerank from_ptr(std::unique_ptr<server_task_result> & result_ptr) {
return copy_cast_ptr(server_task_result_rerank, result_ptr); return copy_cast_ptr(server_task_result_rerank, result_ptr);
} }
virtual ~server_task_result_rerank() = default;
}; };
struct server_task_result_error : server_task_result { struct server_task_result_error : server_task_result {
@ -362,6 +371,8 @@ struct server_task_result_error : server_task_result {
static server_task_result_error from_ptr(std::unique_ptr<server_task_result> & result_ptr) { static server_task_result_error from_ptr(std::unique_ptr<server_task_result> & result_ptr) {
return copy_cast_ptr(server_task_result_error, result_ptr); return copy_cast_ptr(server_task_result_error, result_ptr);
} }
virtual ~server_task_result_error() = default;
}; };
struct server_task_result_metrics : server_task_result { struct server_task_result_metrics : server_task_result {
@ -422,6 +433,8 @@ struct server_task_result_metrics : server_task_result {
static server_task_result_metrics from_ptr(std::unique_ptr<server_task_result> & result_ptr) { static server_task_result_metrics from_ptr(std::unique_ptr<server_task_result> & result_ptr) {
return copy_cast_ptr(server_task_result_metrics, result_ptr); return copy_cast_ptr(server_task_result_metrics, result_ptr);
} }
virtual ~server_task_result_metrics() = default;
}; };
struct server_task_result_slot_save_load : server_task_result { struct server_task_result_slot_save_load : server_task_result {
@ -429,12 +442,8 @@ struct server_task_result_slot_save_load : server_task_result {
std::string filename; std::string filename;
bool is_save; // true = save, false = load bool is_save; // true = save, false = load
size_t n_saved; size_t n_tokens;
size_t n_written; size_t n_bytes;
size_t n_restored;
size_t n_read;
double t_ms; double t_ms;
json to_json() { json to_json() {
@ -442,8 +451,8 @@ struct server_task_result_slot_save_load : server_task_result {
return json { return json {
{ "id_slot", id_slot }, { "id_slot", id_slot },
{ "filename", filename }, { "filename", filename },
{ "n_saved", n_saved }, { "n_saved", n_tokens },
{ "n_written", n_written }, { "n_written", n_bytes },
{ "timings", { { "timings", {
{ "save_ms", t_ms } { "save_ms", t_ms }
}}, }},
@ -452,8 +461,8 @@ struct server_task_result_slot_save_load : server_task_result {
return json { return json {
{ "id_slot", id_slot }, { "id_slot", id_slot },
{ "filename", filename }, { "filename", filename },
{ "n_restored", n_restored }, { "n_restored", n_tokens },
{ "n_read", n_read }, { "n_read", n_bytes },
{ "timings", { { "timings", {
{ "restore_ms", t_ms } { "restore_ms", t_ms }
}}, }},
@ -464,6 +473,8 @@ struct server_task_result_slot_save_load : server_task_result {
static server_task_result_slot_save_load from_ptr(std::unique_ptr<server_task_result> & result_ptr) { static server_task_result_slot_save_load from_ptr(std::unique_ptr<server_task_result> & result_ptr) {
return copy_cast_ptr(server_task_result_slot_save_load, result_ptr); return copy_cast_ptr(server_task_result_slot_save_load, result_ptr);
} }
virtual ~server_task_result_slot_save_load() = default;
}; };
struct server_task_result_slot_erase : server_task_result { struct server_task_result_slot_erase : server_task_result {
@ -480,6 +491,8 @@ struct server_task_result_slot_erase : server_task_result {
static server_task_result_slot_erase from_ptr(std::unique_ptr<server_task_result> & result_ptr) { static server_task_result_slot_erase from_ptr(std::unique_ptr<server_task_result> & result_ptr) {
return copy_cast_ptr(server_task_result_slot_erase, result_ptr); return copy_cast_ptr(server_task_result_slot_erase, result_ptr);
} }
virtual ~server_task_result_slot_erase() = default;
}; };
struct server_task_result_apply_lora : server_task_result { struct server_task_result_apply_lora : server_task_result {