mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-05-08 16:28:53 +00:00
fix: skip empty prompt segments around attention range (#1429)
This commit is contained in:
parent
1b4e9be643
commit
84fc5446d2
@ -1673,14 +1673,18 @@ struct LLMEmbedder : public Conditioner {
|
|||||||
size_t max_length = 100000000) {
|
size_t max_length = 100000000) {
|
||||||
std::vector<std::pair<std::string, float>> parsed_attention;
|
std::vector<std::pair<std::string, float>> parsed_attention;
|
||||||
if (attn_range.first >= 0 && attn_range.second > 0) {
|
if (attn_range.first >= 0 && attn_range.second > 0) {
|
||||||
parsed_attention.emplace_back(text.substr(0, attn_range.first), 1.f);
|
if (attn_range.first > 0) {
|
||||||
|
parsed_attention.emplace_back(text.substr(0, attn_range.first), 1.f);
|
||||||
|
}
|
||||||
if (attn_range.second - attn_range.first > 0) {
|
if (attn_range.second - attn_range.first > 0) {
|
||||||
auto new_parsed_attention = parse_prompt_attention(text.substr(attn_range.first, attn_range.second - attn_range.first));
|
auto new_parsed_attention = parse_prompt_attention(text.substr(attn_range.first, attn_range.second - attn_range.first));
|
||||||
parsed_attention.insert(parsed_attention.end(),
|
parsed_attention.insert(parsed_attention.end(),
|
||||||
new_parsed_attention.begin(),
|
new_parsed_attention.begin(),
|
||||||
new_parsed_attention.end());
|
new_parsed_attention.end());
|
||||||
}
|
}
|
||||||
parsed_attention.emplace_back(text.substr(attn_range.second), 1.f);
|
if (attn_range.second < text.size()) {
|
||||||
|
parsed_attention.emplace_back(text.substr(attn_range.second), 1.f);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
parsed_attention.emplace_back(text, 1.f);
|
parsed_attention.emplace_back(text, 1.f);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user