review: macro f lowercase, str append to sstream
This commit is contained in:
parent
f7ac43155b
commit
3a10f5aa34
2 changed files with 59 additions and 50 deletions
95
common/log.h
95
common/log.h
|
@ -115,19 +115,27 @@ inline std::string log_get_pid()
|
|||
}
|
||||
|
||||
// Utility function for generating log file names with unique id based on thread id.
|
||||
// invocation with LOG_FILENAME_GENERATOR( "llama", "log" ) creates a string "llama.<number>.log"
|
||||
// invocation with log_filename_generator( "llama", "log" ) creates a string "llama.<number>.log"
|
||||
// where the number is a runtime id of the current thread.
|
||||
|
||||
#define LOG_FILENAME_GENERATOR(log_file_basename, log_file_extension) _log_filename_generator(log_file_basename, log_file_extension)
|
||||
#define log_filename_generator(log_file_basename, log_file_extension) _log_filename_generator(log_file_basename, log_file_extension)
|
||||
|
||||
// INTERNAL, DO NOT USE
|
||||
inline std::string _log_filename_generator(const std::string & log_file_basename, const std::string & log_file_extension)
|
||||
{
|
||||
return std::string().append(log_file_basename).append(".").append(log_get_pid()).append(".").append(log_file_extension);
|
||||
std::stringstream buf;
|
||||
|
||||
buf << log_file_basename;
|
||||
buf << ".";
|
||||
buf << log_get_pid();
|
||||
buf << ".";
|
||||
buf << log_file_extension;
|
||||
|
||||
return buf.str();
|
||||
}
|
||||
|
||||
#ifndef LOG_DEFAULT_FILE_NAME
|
||||
/**/#define LOG_DEFAULT_FILE_NAME LOG_FILENAME_GENERATOR("llama", "log")
|
||||
/**/#define LOG_DEFAULT_FILE_NAME log_filename_generator("llama", "log")
|
||||
#endif
|
||||
|
||||
// Utility for turning #define values into string literals
|
||||
|
@ -412,7 +420,7 @@ inline FILE *_log_handler2(bool change = false, LogTriState disable = LogTriStat
|
|||
// Disables logs entirely at runtime.
|
||||
// Makes LOG() and LOG_TEE() produce no output,
|
||||
// untill enabled back.
|
||||
#define LOG_DISABLE() _log_disable()
|
||||
#define log_disable() _log_disable()
|
||||
|
||||
// INTERNAL, DO NOT USE
|
||||
inline FILE *_log_disable()
|
||||
|
@ -421,7 +429,7 @@ inline FILE *_log_disable()
|
|||
}
|
||||
|
||||
// Enables logs at runtime.
|
||||
#define LOG_ENABLE() _log_enable()
|
||||
#define log_enable() _log_enable()
|
||||
|
||||
// INTERNAL, DO NOT USE
|
||||
inline FILE *_log_enable()
|
||||
|
@ -430,7 +438,7 @@ inline FILE *_log_enable()
|
|||
}
|
||||
|
||||
// Sets target fir logs, either by a file name or FILE* pointer (stdout, stderr, or any valid FILE*)
|
||||
#define LOG_SET_TARGET(target) _log_set_target(target)
|
||||
#define log_set_target(target) _log_set_target(target)
|
||||
|
||||
// INTERNAL, DO NOT USE
|
||||
inline FILE *_log_set_target(const std::string & filename) { return _log_handler1(true, LogTriStateSame, filename); }
|
||||
|
@ -441,32 +449,32 @@ inline FILE *log_handler() { return _log_handler1(); }
|
|||
|
||||
inline void log_test()
|
||||
{
|
||||
LOG_DISABLE();
|
||||
log_disable();
|
||||
LOG("01 Hello World to nobody, because logs are disabled!\n")
|
||||
LOG_ENABLE();
|
||||
log_enable();
|
||||
LOG("02 Hello World to default output, which is \"%s\" ( Yaaay, arguments! )!\n", LOG_STRINGIZE(LOG_TARGET))
|
||||
LOG_TEE("03 Hello World to **both** default output and " LOG_TEE_TARGET_STRING "!\n")
|
||||
LOG_SET_TARGET(stderr);
|
||||
log_set_target(stderr);
|
||||
LOG("04 Hello World to stderr!\n")
|
||||
LOG_TEE("05 Hello World TEE with double printing to stderr prevented!\n")
|
||||
LOG_SET_TARGET(LOG_DEFAULT_FILE_NAME);
|
||||
log_set_target(LOG_DEFAULT_FILE_NAME);
|
||||
LOG("06 Hello World to default log file!\n")
|
||||
LOG_SET_TARGET(stdout);
|
||||
log_set_target(stdout);
|
||||
LOG("07 Hello World to stdout!\n")
|
||||
LOG_SET_TARGET(LOG_DEFAULT_FILE_NAME);
|
||||
log_set_target(LOG_DEFAULT_FILE_NAME);
|
||||
LOG("08 Hello World to default log file again!\n")
|
||||
LOG_DISABLE();
|
||||
log_disable();
|
||||
LOG("09 Hello World _1_ into the void!\n")
|
||||
LOG_ENABLE();
|
||||
log_enable();
|
||||
LOG("10 Hello World back from the void ( you should not see _1_ in the log or the output )!\n")
|
||||
LOG_DISABLE();
|
||||
LOG_SET_TARGET("llama.anotherlog.log");
|
||||
log_disable();
|
||||
log_set_target("llama.anotherlog.log");
|
||||
LOG("11 Hello World _2_ to nobody, new target was selected but logs are still disabled!\n")
|
||||
LOG_ENABLE();
|
||||
log_enable();
|
||||
LOG("12 Hello World this time in a new file ( you should not see _2_ in the log or the output )?\n")
|
||||
LOG_SET_TARGET("llama.yetanotherlog.log");
|
||||
log_set_target("llama.yetanotherlog.log");
|
||||
LOG("13 Hello World this time in yet new file?\n")
|
||||
LOG_SET_TARGET(LOG_FILENAME_GENERATOR("llama_autonamed", "log"));
|
||||
log_set_target(log_filename_generator("llama_autonamed", "log"));
|
||||
LOG("14 Hello World in log with generated filename!\n")
|
||||
#ifdef _WIN32
|
||||
LOG_TEE("15 Hello msvc TEE without arguments\n")
|
||||
|
@ -489,12 +497,12 @@ inline bool log_param_single_parse(const std::string & param)
|
|||
}
|
||||
else if (std::string("--log-disable") == param) // NOLINT
|
||||
{
|
||||
LOG_DISABLE();
|
||||
log_disable();
|
||||
return true;
|
||||
}
|
||||
else if (std::string("--log-enable") == param)
|
||||
{
|
||||
LOG_ENABLE();
|
||||
log_enable();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -509,7 +517,7 @@ inline bool log_param_pair_parse(bool check_but_dont_parse, const std::string &
|
|||
{
|
||||
return true;
|
||||
}
|
||||
LOG_SET_TARGET(LOG_FILENAME_GENERATOR(next.empty() ? "unnamed" : next, "log"));
|
||||
log_set_target(log_filename_generator(next.empty() ? "unnamed" : next, "log"));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -530,27 +538,27 @@ inline void log_print_usage()
|
|||
fprintf(stdout, " Log file will be tagged with unique ID and written as \"<name>.<ID>.log\"\n"); /* */
|
||||
}
|
||||
|
||||
#define LOG_DUMP_CMDLINE(argc, argv) _log_dump_cmdline(argc, argv)
|
||||
#define log_dump_cmdline(argc, argv) _log_dump_cmdline(argc, argv)
|
||||
|
||||
// INTERNAL, DO NOT USE
|
||||
inline void _log_dump_cmdline(int argc, char **argv)
|
||||
{
|
||||
std::string buf;
|
||||
std::stringstream buf;
|
||||
for (int i = 0; i < argc; ++i)
|
||||
{
|
||||
if (std::string(argv[i]).find(' ') != std::string::npos)
|
||||
{
|
||||
buf.append(" \"").append(argv[i]).append("\"");
|
||||
buf << " \"" << argv[i] <<"\"";
|
||||
}
|
||||
else
|
||||
{
|
||||
buf.append(" ").append(argv[i]);
|
||||
buf << " " << argv[i];
|
||||
}
|
||||
}
|
||||
LOGLN("Cmd:%s", buf.c_str())
|
||||
LOGLN("Cmd:%s", buf.str().c_str())
|
||||
}
|
||||
|
||||
#define LOG_TOSTR(var) _log_var_to_string(var).c_str()
|
||||
#define log_tostr(var) _log_var_to_string(var).c_str()
|
||||
|
||||
inline std::string _log_var_to_string(bool var)
|
||||
{
|
||||
|
@ -564,8 +572,8 @@ inline std::string _log_var_to_string(std::string var)
|
|||
|
||||
inline std::string _log_var_to_string(const std::vector<int> & var)
|
||||
{
|
||||
std::string buf;
|
||||
buf.append("[ ");
|
||||
std::stringstream buf;
|
||||
buf << "[ ";
|
||||
bool first = true;
|
||||
for (auto e : var)
|
||||
{
|
||||
|
@ -575,24 +583,26 @@ inline std::string _log_var_to_string(const std::vector<int> & var)
|
|||
}
|
||||
else
|
||||
{
|
||||
buf.append(", ");
|
||||
buf << ", ";
|
||||
}
|
||||
buf.append(std::to_string(e));
|
||||
buf << std::to_string(e);
|
||||
}
|
||||
buf.append(" ]");
|
||||
buf << " ]";
|
||||
|
||||
return buf;
|
||||
return buf.str();
|
||||
}
|
||||
|
||||
#define LOG_TOKENS_TOSTR_PRETTY(ctx, tokens) \
|
||||
[&tokens, &ctx]() \
|
||||
{ \
|
||||
std::string buf("[ "); \
|
||||
std::stringstream buf; \
|
||||
buf << "[ "; \
|
||||
\
|
||||
bool first = true; \
|
||||
for (const auto &token : tokens) \
|
||||
{ \
|
||||
if (!first) \
|
||||
buf.append(", "); \
|
||||
buf << ", "; \
|
||||
else \
|
||||
first = false; \
|
||||
\
|
||||
|
@ -606,13 +616,12 @@ inline std::string _log_var_to_string(const std::vector<int> & var)
|
|||
detokenized.end()); \
|
||||
\
|
||||
buf \
|
||||
.append("'") \
|
||||
.append(detokenized) \
|
||||
.append("'") \
|
||||
.append(":") \
|
||||
.append(std::to_string(token)); \
|
||||
<< "'" << detokenized << "'" \
|
||||
<< ":" << std::to_string(token); \
|
||||
} \
|
||||
return buf.append(" ]"); \
|
||||
buf << " ]"; \
|
||||
\
|
||||
return buf.str(); \
|
||||
}() \
|
||||
.c_str()
|
||||
|
||||
|
|
|
@ -114,9 +114,9 @@ int main(int argc, char ** argv) {
|
|||
}
|
||||
|
||||
#ifndef LOG_DISABLE_LOGS
|
||||
LOG_SET_TARGET(LOG_FILENAME_GENERATOR("main", "log"));
|
||||
log_set_target(log_filename_generator("main", "log"));
|
||||
LOG_TEE("Log start\n");
|
||||
LOG_DUMP_CMDLINE(argc,argv);
|
||||
log_dump_cmdline(argc,argv);
|
||||
#endif // LOG_DISABLE_LOGS
|
||||
|
||||
// TODO: Dump params ?
|
||||
|
@ -266,7 +266,7 @@ int main(int argc, char ** argv) {
|
|||
embd_inp = session_tokens;
|
||||
}
|
||||
|
||||
LOG("prompt: \"%s\"\n", LOG_TOSTR(params.prompt));
|
||||
LOG("prompt: \"%s\"\n", log_tostr(params.prompt));
|
||||
LOG("tokens: %s\n", LOG_TOKENS_TOSTR_PRETTY(ctx, embd_inp));
|
||||
|
||||
// Should not run without any tokens
|
||||
|
@ -280,7 +280,7 @@ int main(int argc, char ** argv) {
|
|||
int guidance_offset = 0;
|
||||
int original_prompt_len = 0;
|
||||
if (ctx_guidance) {
|
||||
LOG("cfg_negative_prompt: \"%s\"\n", LOG_TOSTR(params.cfg_negative_prompt));
|
||||
LOG("cfg_negative_prompt: \"%s\"\n", log_tostr(params.cfg_negative_prompt));
|
||||
|
||||
guidance_inp = ::llama_tokenize(ctx_guidance, params.cfg_negative_prompt, add_bos);
|
||||
LOG("guidance_inp tokenized: %s\n", LOG_TOKENS_TOSTR_PRETTY(ctx_guidance, guidance_inp));
|
||||
|
@ -290,8 +290,8 @@ int main(int argc, char ** argv) {
|
|||
|
||||
original_prompt_len = original_inp.size();
|
||||
guidance_offset = (int)guidance_inp.size() - original_prompt_len;
|
||||
LOG("original_prompt_len: %s", LOG_TOSTR(original_prompt_len));
|
||||
LOG("guidance_offset: %s", LOG_TOSTR(guidance_offset));
|
||||
LOG("original_prompt_len: %s", log_tostr(original_prompt_len));
|
||||
LOG("guidance_offset: %s", log_tostr(guidance_offset));
|
||||
}
|
||||
|
||||
const int n_ctx = llama_n_ctx(ctx);
|
||||
|
@ -326,7 +326,7 @@ int main(int argc, char ** argv) {
|
|||
|
||||
LOGLN(
|
||||
"recalculate the cached logits (check): embd_inp.empty() %s, n_matching_session_tokens %zu, embd_inp.size() %zu, session_tokens.size() %zu, embd_inp.size() %zu",
|
||||
LOG_TOSTR(embd_inp.empty()), n_matching_session_tokens, embd_inp.size(), session_tokens.size(), embd_inp.size());
|
||||
log_tostr(embd_inp.empty()), n_matching_session_tokens, embd_inp.size(), session_tokens.size(), embd_inp.size());
|
||||
|
||||
// if we will use the cache for the full prompt without reaching the end of the cache, force
|
||||
// reevaluation of the last token token to recalculate the cached logits
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue