mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-10-15 10:04:44 +00:00
Formatted src/data_generation/llama
This commit is contained in:
@@ -89,10 +89,10 @@ BreweryResult LlamaGenerator::GenerateBrewery(
|
|||||||
raw = this->Infer(system_prompt, user_prompt, max_tokens,
|
raw = this->Infer(system_prompt, user_prompt, max_tokens,
|
||||||
kBreweryJsonGrammar);
|
kBreweryJsonGrammar);
|
||||||
if (logger_) {
|
if (logger_) {
|
||||||
logger_->Log(
|
logger_->Log({.level = LogLevel::Debug,
|
||||||
{.level = LogLevel::Debug,
|
|
||||||
.phase = PipelinePhase::BreweryAndBeerGeneration,
|
.phase = PipelinePhase::BreweryAndBeerGeneration,
|
||||||
.message = std::format("LlamaGenerator: raw output (attempt {}): {}",
|
.message = std::format(
|
||||||
|
"LlamaGenerator: raw output (attempt {}): {}",
|
||||||
attempt + 1, raw)});
|
attempt + 1, raw)});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,10 +106,10 @@ BreweryResult LlamaGenerator::GenerateBrewery(
|
|||||||
// Success: return parsed brewery data
|
// Success: return parsed brewery data
|
||||||
|
|
||||||
if (logger_) {
|
if (logger_) {
|
||||||
logger_->Log(
|
logger_->Log({.level = LogLevel::Info,
|
||||||
{.level = LogLevel::Info,
|
|
||||||
.phase = PipelinePhase::BreweryAndBeerGeneration,
|
.phase = PipelinePhase::BreweryAndBeerGeneration,
|
||||||
.message = std::format("LlamaGenerator: successfully generated "
|
.message = std::format(
|
||||||
|
"LlamaGenerator: successfully generated "
|
||||||
"brewery data on attempt {}",
|
"brewery data on attempt {}",
|
||||||
attempt + 1)});
|
attempt + 1)});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ UserResult LlamaGenerator::GenerateUser(const EnrichedCity& city,
|
|||||||
style_affinities);
|
style_affinities);
|
||||||
|
|
||||||
const std::string retry_context = std::format(
|
const std::string retry_context = std::format(
|
||||||
"Name: {} {}\nCity: {}, {}\nPersona: {}", name.first_name, name.last_name,
|
"Name: {} {}\nCity: {}, {}\nPersona: {}", name.first_name,
|
||||||
city.location.city, city.location.country, persona.name);
|
name.last_name, city.location.city, city.location.country, persona.name);
|
||||||
|
|
||||||
constexpr int max_attempts = 3;
|
constexpr int max_attempts = 3;
|
||||||
std::string raw;
|
std::string raw;
|
||||||
@@ -51,12 +51,13 @@ UserResult LlamaGenerator::GenerateUser(const EnrichedCity& city,
|
|||||||
int max_tokens = kUserInitialMaxTokens;
|
int max_tokens = kUserInitialMaxTokens;
|
||||||
|
|
||||||
for (int attempt = 0; attempt < max_attempts; ++attempt) {
|
for (int attempt = 0; attempt < max_attempts; ++attempt) {
|
||||||
raw = this->Infer(system_prompt, user_prompt, max_tokens, kUserJsonGrammar);
|
raw =
|
||||||
|
this->Infer(system_prompt, user_prompt, max_tokens, kUserJsonGrammar);
|
||||||
if (logger_) {
|
if (logger_) {
|
||||||
logger_->Log(
|
logger_->Log({.level = LogLevel::Debug,
|
||||||
{.level = LogLevel::Debug,
|
|
||||||
.phase = PipelinePhase::UserGeneration,
|
.phase = PipelinePhase::UserGeneration,
|
||||||
.message = std::format("LlamaGenerator: raw output (attempt {}): {}",
|
.message = std::format(
|
||||||
|
"LlamaGenerator: raw output (attempt {}): {}",
|
||||||
attempt + 1, raw)});
|
attempt + 1, raw)});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,7 +83,8 @@ UserResult LlamaGenerator::GenerateUser(const EnrichedCity& city,
|
|||||||
|
|
||||||
last_error = *validation_error;
|
last_error = *validation_error;
|
||||||
if (logger_) {
|
if (logger_) {
|
||||||
logger_->Log({.level = LogLevel::Warn,
|
logger_->Log(
|
||||||
|
{.level = LogLevel::Warn,
|
||||||
.phase = PipelinePhase::UserGeneration,
|
.phase = PipelinePhase::UserGeneration,
|
||||||
.message = std::format(
|
.message = std::format(
|
||||||
"LlamaGenerator: malformed user JSON (attempt {}): {}",
|
"LlamaGenerator: malformed user JSON (attempt {}): {}",
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
* parsing, token decoding, and JSON validation helpers for Llama modules.
|
* parsing, token decoding, and JSON validation helpers for Llama modules.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <llama.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <boost/json.hpp>
|
#include <boost/json.hpp>
|
||||||
@@ -15,8 +17,6 @@
|
|||||||
#include <string_view>
|
#include <string_view>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <llama.h>
|
|
||||||
|
|
||||||
#include "data_generation/llama_generator_helpers.h"
|
#include "data_generation/llama_generator_helpers.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@@ -82,8 +82,8 @@ bool ReadRequiredTrimmedStringField(const boost::json::object& obj,
|
|||||||
bool HasSchemaPlaceholder(std::span<std::string* const> values) {
|
bool HasSchemaPlaceholder(std::span<std::string* const> values) {
|
||||||
for (const std::string* value : values) {
|
for (const std::string* value : values) {
|
||||||
std::string lowered = *value;
|
std::string lowered = *value;
|
||||||
std::ranges::transform(lowered, lowered.begin(),
|
std::ranges::transform(
|
||||||
[](const unsigned char character) {
|
lowered, lowered.begin(), [](const unsigned char character) {
|
||||||
return static_cast<char>(std::tolower(character));
|
return static_cast<char>(std::tolower(character));
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -128,8 +128,8 @@ void AppendTokenPiece(const llama_vocab* vocab, llama_token token,
|
|||||||
|
|
||||||
auto buffer_too_small = [](int32_t result) -> bool { return result < 0; };
|
auto buffer_too_small = [](int32_t result) -> bool { return result < 0; };
|
||||||
|
|
||||||
int32_t bytes =
|
int32_t bytes = llama_token_to_piece(vocab, token, buffer.data(),
|
||||||
llama_token_to_piece(vocab, token, buffer.data(), buffer.size(), 0, true);
|
buffer.size(), 0, true);
|
||||||
|
|
||||||
if (!buffer_too_small(bytes)) {
|
if (!buffer_too_small(bytes)) {
|
||||||
// Append the decoded bytes from the stack buffer.
|
// Append the decoded bytes from the stack buffer.
|
||||||
@@ -190,8 +190,8 @@ std::optional<std::string> ValidateBreweryJson(const std::string& raw,
|
|||||||
return validation_error;
|
return validation_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ReadRequiredTrimmedStringField(obj, "name_local", brewery_out.name_local,
|
if (!ReadRequiredTrimmedStringField(
|
||||||
&validation_error)) {
|
obj, "name_local", brewery_out.name_local, &validation_error)) {
|
||||||
return validation_error;
|
return validation_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,7 +248,8 @@ std::optional<std::string> ValidateUserJson(const std::string& raw,
|
|||||||
|
|
||||||
const boost::json::value* activity_weight_field =
|
const boost::json::value* activity_weight_field =
|
||||||
obj.if_contains("activity_weight");
|
obj.if_contains("activity_weight");
|
||||||
if (activity_weight_field == nullptr || !activity_weight_field->is_number()) {
|
if (activity_weight_field == nullptr ||
|
||||||
|
!activity_weight_field->is_number()) {
|
||||||
return "Missing or invalid numeric field: activity_weight";
|
return "Missing or invalid numeric field: activity_weight";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
* output tokens back to text for system+user chat prompts.
|
* output tokens back to text for system+user chat prompts.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <llama.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <format>
|
#include <format>
|
||||||
@@ -14,8 +16,6 @@
|
|||||||
#include <string_view>
|
#include <string_view>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <llama.h>
|
|
||||||
|
|
||||||
#include "data_generation/llama_generator.h"
|
#include "data_generation/llama_generator.h"
|
||||||
#include "data_generation/llama_generator_helpers.h"
|
#include "data_generation/llama_generator_helpers.h"
|
||||||
|
|
||||||
@@ -58,7 +58,8 @@ SamplerHandle MakeSamplerChain(const llama_vocab* vocab,
|
|||||||
|
|
||||||
if (!grammar.empty()) {
|
if (!grammar.empty()) {
|
||||||
const std::string grammar_text(grammar);
|
const std::string grammar_text(grammar);
|
||||||
add_sampler(llama_sampler_init_grammar(vocab, grammar_text.c_str(), "root"),
|
add_sampler(
|
||||||
|
llama_sampler_init_grammar(vocab, grammar_text.c_str(), "root"),
|
||||||
"LlamaGenerator: failed to initialize grammar sampler");
|
"LlamaGenerator: failed to initialize grammar sampler");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,7 +174,8 @@ std::string LlamaGenerator::InferFormatted(const std::string& formatted_prompt,
|
|||||||
prompt_tokens.resize(static_cast<size_t>(token_count));
|
prompt_tokens.resize(static_cast<size_t>(token_count));
|
||||||
if (token_count > prompt_budget) {
|
if (token_count > prompt_budget) {
|
||||||
if (logger_) {
|
if (logger_) {
|
||||||
logger_->Log({.level = LogLevel::Warn,
|
logger_->Log(
|
||||||
|
{.level = LogLevel::Warn,
|
||||||
.phase = PipelinePhase::BreweryAndBeerGeneration,
|
.phase = PipelinePhase::BreweryAndBeerGeneration,
|
||||||
.message = std::format(
|
.message = std::format(
|
||||||
"LlamaGenerator: prompt too long ({} tokens), "
|
"LlamaGenerator: prompt too long ({} tokens), "
|
||||||
|
|||||||
@@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
#include "data_generation/llama_generator.h"
|
#include "data_generation/llama_generator.h"
|
||||||
|
|
||||||
|
#include <llama.h>
|
||||||
|
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <random>
|
#include <random>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <llama.h>
|
|
||||||
|
|
||||||
#include "data_model/models.h"
|
#include "data_model/models.h"
|
||||||
|
|
||||||
static constexpr uint32_t kMaxContextSize = 32768U;
|
static constexpr uint32_t kMaxContextSize = 32768U;
|
||||||
|
|||||||
@@ -4,15 +4,15 @@
|
|||||||
* context, and resets prior resources during model initialization.
|
* context, and resets prior resources during model initialization.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <ggml-backend.h>
|
||||||
|
#include <llama.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include <ggml-backend.h>
|
|
||||||
#include <llama.h>
|
|
||||||
|
|
||||||
#include "data_generation/llama_generator.h"
|
#include "data_generation/llama_generator.h"
|
||||||
|
|
||||||
// Maximum batch size for decode operations. Capping the batch prevents
|
// Maximum batch size for decode operations. Capping the batch prevents
|
||||||
|
|||||||
Reference in New Issue
Block a user