Do not create too many rayon tasks when processing the settings

This commit is contained in:
Kerollmops 2025-01-29 17:02:06 +01:00
parent cd58a71f57
commit 226bcb2717
No known key found for this signature in database
GPG Key ID: F250A4C4E3AE5F5F
3 changed files with 36 additions and 24 deletions

View File

@ -98,14 +98,18 @@ impl Embedder {
text_chunks: Vec<Vec<String>>, text_chunks: Vec<Vec<String>>,
threads: &ThreadPoolNoAbort, threads: &ThreadPoolNoAbort,
) -> Result<Vec<Vec<Embedding>>, EmbedError> { ) -> Result<Vec<Vec<Embedding>>, EmbedError> {
threads if threads.active_operations() >= REQUEST_PARALLELISM {
.install(move || { text_chunks.into_iter().map(move |chunk| self.embed(&chunk, None)).collect()
text_chunks.into_par_iter().map(move |chunk| self.embed(&chunk, None)).collect() } else {
}) threads
.map_err(|error| EmbedError { .install(move || {
kind: EmbedErrorKind::PanicInThreadPool(error), text_chunks.into_par_iter().map(move |chunk| self.embed(&chunk, None)).collect()
fault: FaultSource::Bug, })
})? .map_err(|error| EmbedError {
kind: EmbedErrorKind::PanicInThreadPool(error),
fault: FaultSource::Bug,
})?
}
} }
pub(crate) fn embed_chunks_ref( pub(crate) fn embed_chunks_ref(

View File

@ -255,14 +255,18 @@ impl Embedder {
text_chunks: Vec<Vec<String>>, text_chunks: Vec<Vec<String>>,
threads: &ThreadPoolNoAbort, threads: &ThreadPoolNoAbort,
) -> Result<Vec<Vec<Embedding>>, EmbedError> { ) -> Result<Vec<Vec<Embedding>>, EmbedError> {
threads if threads.active_operations() >= REQUEST_PARALLELISM {
.install(move || { text_chunks.into_iter().map(move |chunk| self.embed(&chunk, None)).collect()
text_chunks.into_par_iter().map(move |chunk| self.embed(&chunk, None)).collect() } else {
}) threads
.map_err(|error| EmbedError { .install(move || {
kind: EmbedErrorKind::PanicInThreadPool(error), text_chunks.into_par_iter().map(move |chunk| self.embed(&chunk, None)).collect()
fault: FaultSource::Bug, })
})? .map_err(|error| EmbedError {
kind: EmbedErrorKind::PanicInThreadPool(error),
fault: FaultSource::Bug,
})?
}
} }
pub(crate) fn embed_chunks_ref( pub(crate) fn embed_chunks_ref(

View File

@ -188,14 +188,18 @@ impl Embedder {
text_chunks: Vec<Vec<String>>, text_chunks: Vec<Vec<String>>,
threads: &ThreadPoolNoAbort, threads: &ThreadPoolNoAbort,
) -> Result<Vec<Vec<Embedding>>, EmbedError> { ) -> Result<Vec<Vec<Embedding>>, EmbedError> {
threads if threads.active_operations() >= REQUEST_PARALLELISM {
.install(move || { text_chunks.into_iter().map(move |chunk| self.embed(chunk, None)).collect()
text_chunks.into_par_iter().map(move |chunk| self.embed(chunk, None)).collect() } else {
}) threads
.map_err(|error| EmbedError { .install(move || {
kind: EmbedErrorKind::PanicInThreadPool(error), text_chunks.into_par_iter().map(move |chunk| self.embed(chunk, None)).collect()
fault: FaultSource::Bug, })
})? .map_err(|error| EmbedError {
kind: EmbedErrorKind::PanicInThreadPool(error),
fault: FaultSource::Bug,
})?
}
} }
pub(crate) fn embed_chunks_ref( pub(crate) fn embed_chunks_ref(