Provide some guardrails for thread count.

This commit is contained in:
Adam Treat 2023-07-10 16:52:32 -04:00 committed by AT
parent a190041c6e
commit 99cd555743
3 changed files with 8 additions and 7 deletions

View File

@ -461,8 +461,6 @@ bool ChatLLM::promptInternal(const QList<QString> &collectionList, const QString
QString instructPrompt = augmentedTemplate.join("\n").arg(prompt); QString instructPrompt = augmentedTemplate.join("\n").arg(prompt);
int n_threads = MySettings::globalInstance()->threadCount(); int n_threads = MySettings::globalInstance()->threadCount();
if (n_threads <= 0)
n_threads = std::min(4, (int32_t) std::thread::hardware_concurrency());
m_stopGenerating = false; m_stopGenerating = false;
auto promptFunc = std::bind(&ChatLLM::handlePrompt, this, std::placeholders::_1); auto promptFunc = std::bind(&ChatLLM::handlePrompt, this, std::placeholders::_1);
@ -773,8 +771,6 @@ void ChatLLM::processSystemPrompt()
const float repeat_penalty = MySettings::globalInstance()->modelRepeatPenalty(m_modelInfo); const float repeat_penalty = MySettings::globalInstance()->modelRepeatPenalty(m_modelInfo);
const int32_t repeat_penalty_tokens = MySettings::globalInstance()->modelRepeatPenaltyTokens(m_modelInfo); const int32_t repeat_penalty_tokens = MySettings::globalInstance()->modelRepeatPenaltyTokens(m_modelInfo);
int n_threads = MySettings::globalInstance()->threadCount(); int n_threads = MySettings::globalInstance()->threadCount();
if (n_threads <= 0)
n_threads = std::min(4, (int32_t) std::thread::hardware_concurrency());
m_ctx.n_predict = n_predict; m_ctx.n_predict = n_predict;
m_ctx.top_k = top_k; m_ctx.top_k = top_k;
m_ctx.top_p = top_p; m_ctx.top_p = top_p;

View File

@ -8,7 +8,7 @@
#include <QStandardPaths> #include <QStandardPaths>
#include <QUrl> #include <QUrl>
static int default_threadCount = 0; static int default_threadCount = std::min(4, (int32_t) std::thread::hardware_concurrency());
static bool default_saveChats = false; static bool default_saveChats = false;
static bool default_saveChatGPTChats = true; static bool default_saveChatGPTChats = true;
static bool default_serverChat = false; static bool default_serverChat = false;
@ -349,7 +349,10 @@ int MySettings::threadCount() const
{ {
QSettings setting; QSettings setting;
setting.sync(); setting.sync();
return setting.value("threadCount", default_threadCount).toInt(); int c = setting.value("threadCount", default_threadCount).toInt();
c = std::max(c, 1);
c = std::min(c, QThread::idealThreadCount());
return c;
} }
void MySettings::setThreadCount(int c) void MySettings::setThreadCount(int c)
@ -357,6 +360,8 @@ void MySettings::setThreadCount(int c)
if (threadCount() == c) if (threadCount() == c)
return; return;
c = std::max(c, 1);
c = std::min(c, QThread::idealThreadCount());
QSettings setting; QSettings setting;
setting.setValue("threadCount", c); setting.setValue("threadCount", c);
setting.sync(); setting.sync();

View File

@ -101,7 +101,7 @@ MySettingsTab {
MyTextField { MyTextField {
text: MySettings.threadCount text: MySettings.threadCount
color: theme.textColor color: theme.textColor
ToolTip.text: qsTr("Amount of processing threads to use, a setting of 0 will use the lesser of 4 or your number of CPU threads") ToolTip.text: qsTr("Amount of processing threads to use bounded by 1 and number of logical processors")
ToolTip.visible: hovered ToolTip.visible: hovered
Layout.row: 3 Layout.row: 3
Layout.column: 1 Layout.column: 1