66 lines
1.7 KiB
C++
66 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace api
|
|
{
|
|
enum class QuantLevel
|
|
{
|
|
BF16,
|
|
FP16,
|
|
Q8,
|
|
Q6,
|
|
Q5,
|
|
Q4,
|
|
Q2,
|
|
Q1,
|
|
};
|
|
|
|
class QuantizationLevel
|
|
{
|
|
private:
|
|
std::string value;
|
|
static std::string enum_to_string(QuantLevel quant)
|
|
{
|
|
switch (quant) {
|
|
case QuantLevel::BF16: return "BF16";
|
|
case QuantLevel::FP16: return "FP16";
|
|
case QuantLevel::Q8: return "Q8_0";
|
|
case QuantLevel::Q6: return "Q6_K";
|
|
case QuantLevel::Q5: return "Q5_K_M";
|
|
case QuantLevel::Q4: return "Q4_K_M";
|
|
case QuantLevel::Q2: return "Q2_K";
|
|
case QuantLevel::Q1: return "Q1";
|
|
default: return "UNKNOWN";
|
|
}
|
|
}
|
|
public:
|
|
QuantizationLevel() : value("UNKNOWN") {}
|
|
QuantizationLevel(QuantLevel quant) : value(enum_to_string(quant)) {}
|
|
QuantizationLevel(const std::string& str) : value(str) {}
|
|
operator std::string() const { return value; }
|
|
};
|
|
|
|
struct models_details
|
|
{
|
|
std::string parent_model;
|
|
std::string format;
|
|
std::string family;
|
|
std::pmr::vector<std::string> families;
|
|
uint32_t parameter_size;
|
|
QuantizationLevel quantization_level;
|
|
std::string expires_at;
|
|
std::string size_vram;
|
|
};
|
|
|
|
struct models {
|
|
std::string name;
|
|
std::string model;
|
|
std::string modified_at;
|
|
uint64_t size;
|
|
std::string digest;
|
|
models_details details;
|
|
};
|
|
} |