char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
8e330954a
char/aliceai-t5-moe
1#pragma once 2 3#include "ggml.h" // for ggml_log_level 4 5#define LOG_CLR_TO_EOL "\033[K\r" 6#define LOG_COL_DEFAULT "\033[0m" 7#define LOG_COL_BOLD "\033[1m" 8#define LOG_COL_RED "\033[31m" 9#define LOG_COL_GREEN "\033[32m" 10#define LOG_COL_YELLOW "\033[33m" 11#define LOG_COL_BLUE "\033[34m" 12#define LOG_COL_MAGENTA "\033[35m" 13#define LOG_COL_CYAN "\033[36m" 14#define LOG_COL_WHITE "\033[37m" 15 16#ifndef __GNUC__ 17# define LOG_ATTRIBUTE_FORMAT (...) 18#elif defined(__MINGW32__ )&& !defined(__clang__ ) 19# define LOG_ATTRIBUTE_FORMAT (...) __attribute__((format(gnu_printf, __VA_ARGS__))) 20#else 21# define LOG_ATTRIBUTE_FORMAT (...) __attribute__((format(printf, __VA_ARGS__))) 22#endif 23 24#define LOG_LEVEL_DEBUG 5 25#define LOG_LEVEL_TRACE 4 26#define LOG_LEVEL_INFO 3 27#define LOG_LEVEL_WARN 2 28#define LOG_LEVEL_ERROR 1 29#define LOG_LEVEL_OUTPUT 0 // output data from tools 30 31#define LOG_DEFAULT_DEBUG LOG_LEVEL_DEBUG 32#define LOG_DEFAULT_LLAMA LOG_LEVEL_INFO 33 34enum log_colors { 35LOG_COLORS_AUTO = -1 , 36LOG_COLORS_DISABLED = 0 , 37LOG_COLORS_ENABLED = 1 , 38}; 39 40// needed by the LOG_TMPL macro to avoid computing log arguments if the verbosity lower 41// set via common_log_set_verbosity() 42int common_log_get_verbosity_thold (void ); 43 44void common_log_set_verbosity_thold (int verbosity );// not thread-safe 45 46bool common_log_get_jsonl (void ); 47 48void common_log_set_jsonl (bool jsonl );// not thread-safe 49 50int common_log_get_verbosity (enum ggml_log_level level ); 51 52void common_log_default_callback (enum ggml_log_level level ,const char * text ,void * user_data ); 53 54// the common_log uses an internal worker thread to print/write log messages 55// when the worker thread is paused, incoming log messages are discarded 56struct common_log ; 57 58struct common_log * common_log_init (); 59 60// Singleton, intentionally leaked to avoid Windows teardown hangs. 61// Call common_log_flush() before exit if you want to ensure all logs are flushed. 62struct common_log * common_log_main (); 63 64void common_log_pause (struct common_log * log );// pause the worker thread, not thread-safe 65void common_log_resume (struct common_log * log );// resume the worker thread, not thread-safe 66void common_log_free (struct common_log * log ); 67 68LOG_ATTRIBUTE_FORMAT (3 ,4 ) 69void common_log_add (struct common_log * log ,enum ggml_log_level level ,const char * fmt , ...); 70 71// defaults: file = NULL, colors = false, prefix = false, timestamps = false 72// 73// regular log output: 74// 75// ggml_backend_metal_log_allocated_size: allocated buffer, size = 6695.84 MiB, ( 6695.91 / 21845.34) 76// llm_load_tensors: ggml ctx size = 0.27 MiB 77// llm_load_tensors: offloading 32 repeating layers to GPU 78// llm_load_tensors: offloading non-repeating layers to GPU 79// 80// with prefix = true, timestamps = true, the log output will look like this: 81// 82// 0.00.035.060 D ggml_backend_metal_log_allocated_size: allocated buffer, size = 6695.84 MiB, ( 6695.91 / 21845.34) 83// 0.00.035.064 I llm_load_tensors: ggml ctx size = 0.27 MiB 84// 0.00.090.578 I llm_load_tensors: offloading 32 repeating layers to GPU 85// 0.00.090.579 I llm_load_tensors: offloading non-repeating layers to GPU 86// 87// D - debug (stderr, V = LOG_DEFAULT_DEBUG) 88// I - info (stdout, V = LOG_DEFAULT_INFO) 89// W - warning (stderr, V = LOG_DEFAULT_WARN) 90// E - error (stderr, V = LOG_DEFAULT_ERROR) 91// O - output (stdout, V = LOG_DEFAULT_OUTPUT) 92// 93 94void common_log_set_file (struct common_log * log ,const char * file );// not thread-safe 95void common_log_set_colors (struct common_log * log ,log_colors colors );// not thread-safe 96void common_log_set_prefix (struct common_log * log ,bool prefix );// whether to output prefix to each log 97void common_log_set_timestamps (struct common_log * log ,bool timestamps );// whether to output timestamps in the prefix 98void common_log_flush (struct common_log * log );// flush all pending log messages 99 100// helper macros for logging 101// use these to avoid computing log arguments if the verbosity of the log is higher than the threshold 102// 103// for example: 104// 105// LOG_DBG("this is a debug message: %d\n", expensive_function()); 106// 107// this will avoid calling expensive_function() if LOG_DEFAULT_DEBUG > common_log_verbosity_thold 108// 109 110#define LOG_TMPL (level ,verbosity , ...) \ 111 do { \ 112 if ((verbosity) <= common_log_get_verbosity_thold()) { \ 113 common_log_add(common_log_main(), (level), __VA_ARGS__); \ 114 } \ 115 } while (0) 116 117#define LOG (...) LOG_TMPL(GGML_LOG_LEVEL_NONE, LOG_LEVEL_OUTPUT, __VA_ARGS__) 118#define LOGV (verbosity , ...) LOG_TMPL(GGML_LOG_LEVEL_NONE, verbosity, __VA_ARGS__) 119 120#define LOG_DBG (...) LOG_TMPL(GGML_LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG, __VA_ARGS__) 121#define LOG_TRC (...) LOG_TMPL(GGML_LOG_LEVEL_INFO, LOG_LEVEL_TRACE, __VA_ARGS__) 122#define LOG_INF (...) LOG_TMPL(GGML_LOG_LEVEL_INFO, LOG_LEVEL_INFO, __VA_ARGS__) 123#define LOG_WRN (...) LOG_TMPL(GGML_LOG_LEVEL_WARN, LOG_LEVEL_WARN, __VA_ARGS__) 124#define LOG_ERR (...) LOG_TMPL(GGML_LOG_LEVEL_ERROR, LOG_LEVEL_ERROR, __VA_ARGS__) 125#define LOG_CNT (...) LOG_TMPL(GGML_LOG_LEVEL_CONT, LOG_LEVEL_INFO, __VA_ARGS__) // same as INFO 126 127#define LOG_DBGV (verbosity , ...) LOG_TMPL(GGML_LOG_LEVEL_DEBUG, verbosity, __VA_ARGS__) 128#define LOG_TRCV (verbosity , ...) LOG_TMPL(GGML_LOG_LEVEL_TRACE, verbosity, __VA_ARGS__) 129#define LOG_INFV (verbosity , ...) LOG_TMPL(GGML_LOG_LEVEL_INFO, verbosity, __VA_ARGS__) 130#define LOG_WRNV (verbosity , ...) LOG_TMPL(GGML_LOG_LEVEL_WARN, verbosity, __VA_ARGS__) 131#define LOG_ERRV (verbosity , ...) LOG_TMPL(GGML_LOG_LEVEL_ERROR, verbosity, __VA_ARGS__) 132#define LOG_CNTV (verbosity , ...) LOG_TMPL(GGML_LOG_LEVEL_CONT, verbosity, __VA_ARGS__) 133 134class common_json ;// defined in common/json.h 135 136// helper allows different types of json output 137// no-op if --log-jsonl is not set 138void common_log_add_json (struct common_log * log ,const char * type ,const common_json & data ); 139 140// will only print if --log-jsonl is set 141#define LOG_JSON (type ,data ) \ 142 do { \ 143 if (common_log_get_jsonl()) { \ 144 common_log_add_json(common_log_main(), type, data); \ 145 } \ 146 } while (0)