Skip to content

Commit 8437cd3

Browse files
Merge branch 'main' of github.com:elastic/elasticsearch into ia-enable-ccm-by-default
2 parents 5e56d16 + ad268e0 commit 8437cd3

File tree

17 files changed

+381
-66
lines changed

17 files changed

+381
-66
lines changed

docs/changelog/138047.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 138047
2+
summary: Add configurable `max_batch_size` for `GoogleVertexAI` embedding service
3+
settings
4+
area: Machine Learning
5+
type: bug
6+
issues: []

muted-tests.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,12 @@ tests:
460460
- class: org.elasticsearch.multiproject.test.CoreWithMultipleProjectsClientYamlTestSuiteIT
461461
method: test {yaml=search.retrievers/result-diversification/10_mmr_result_diversification_retriever/Test MMR result diversification single index float type}
462462
issue: https://github.com/elastic/elasticsearch/issues/139335
463+
- class: org.elasticsearch.test.rest.yaml.CcsCommonYamlTestSuiteIT
464+
method: test {p0=search/140_pre_filter_search_shards/prefilter on non-indexed date fields}
465+
issue: https://github.com/elastic/elasticsearch/issues/139381
466+
- class: org.elasticsearch.xpack.downsample.DownsampleIT
467+
method: testAggregateMethod
468+
issue: https://github.com/elastic/elasticsearch/issues/139382
463469

464470
# Examples:
465471
#

server/src/main/java/org/elasticsearch/index/engine/ThreadPoolMergeExecutorService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ public Iterator<Setting<?>> settings() {
175175
* Initial value for IO write rate limit of individual merge tasks when doAutoIOThrottle is true
176176
*/
177177
static final ByteSizeValue START_IO_RATE = ByteSizeValue.ofMb(20L);
178+
179+
private static final Logger logger = LogManager.getLogger(ThreadPoolMergeExecutorService.class);
180+
178181
/**
179182
* Total number of submitted merge tasks that support IO auto throttling and that have not yet been run (or aborted).
180183
* This includes merge tasks that are currently running and that are backlogged (by their respective merge schedulers).
@@ -863,13 +866,15 @@ private static long newTargetIORateBytesPerSec(
863866
MIN_IO_RATE.getBytes(),
864867
currentTargetIORateBytesPerSec - currentTargetIORateBytesPerSec / 10L
865868
);
869+
logger.debug("Decreasing target IO rate for merges to {}", newTargetIORateBytesPerSec);
866870
} else if (currentlySubmittedIOThrottledMergeTasks > concurrentMergesCeilLimitForThrottling
867871
&& currentTargetIORateBytesPerSec < MAX_IO_RATE.getBytes()) {
868872
// increase target IO rate by 20% (capped)
869873
newTargetIORateBytesPerSec = Math.min(
870874
MAX_IO_RATE.getBytes(),
871875
currentTargetIORateBytesPerSec + currentTargetIORateBytesPerSec / 5L
872876
);
877+
logger.debug("Increasing target IO rate for merges to {}", newTargetIORateBytesPerSec);
873878
} else {
874879
newTargetIORateBytesPerSec = currentTargetIORateBytesPerSec;
875880
}

server/src/main/java/org/elasticsearch/inference/ServiceSettings.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper;
1515
import org.elasticsearch.xcontent.ToXContentObject;
1616

17+
import java.util.Map;
18+
1719
public interface ServiceSettings extends ToXContentObject, VersionedNamedWriteable, FilteredXContent {
1820

1921
/**
@@ -61,4 +63,8 @@ default DenseVectorFieldMapper.ElementType elementType() {
6163
*/
6264
@Nullable
6365
String modelId();
66+
67+
default ServiceSettings updateServiceSettings(Map<String, Object> serviceSettings) {
68+
return this;
69+
}
6470
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
9241000
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
esql_exponential_histogram_supported_version,9240000
1+
google_vertex_ai_configurable_max_batch_size,9241000

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportUpdateInferenceModelAction.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,7 @@ private Model combineExistingModelWithNewSettings(
223223
newSecretSettings = existingSecretSettings.newSecretSettings(settingsToUpdate.serviceSettings());
224224
}
225225
if (settingsToUpdate.serviceSettings() != null) {
226-
// In cluster services can have their deployment settings updated, so this is a special case
227-
if (newServiceSettings instanceof ElasticsearchInternalServiceSettings elasticServiceSettings) {
228-
newServiceSettings = elasticServiceSettings.updateServiceSettings(settingsToUpdate.serviceSettings());
229-
}
226+
newServiceSettings = newServiceSettings.updateServiceSettings(settingsToUpdate.serviceSettings());
230227
}
231228
if (settingsToUpdate.taskSettings() != null && existingTaskSettings != null) {
232229
newTaskSettings = existingTaskSettings.updatedTaskSettings(settingsToUpdate.taskSettings());

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/ServiceUtils.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,22 @@ public static Integer extractOptionalPositiveInteger(
748748
return extractOptionalInteger(map, settingName, scope, validationException, true);
749749
}
750750

751+
public static Integer extractOptionalPositiveIntegerLessThanOrEqualToMax(
752+
Map<String, Object> map,
753+
String settingName,
754+
int maxValue,
755+
String scope,
756+
ValidationException validationException
757+
) {
758+
Integer optionalField = extractOptionalPositiveInteger(map, settingName, scope, validationException);
759+
760+
if (optionalField != null && optionalField > maxValue) {
761+
validationException.addValidationError(mustBeLessThanOrEqualNumberErrorMessage(settingName, scope, optionalField, maxValue));
762+
}
763+
764+
return optionalField;
765+
}
766+
751767
public static Integer extractOptionalInteger(
752768
Map<String, Object> map,
753769
String settingName,

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ public TransportVersion getMinimalSupportedVersion() {
227227
return TransportVersion.minimumCompatible();
228228
}
229229

230-
public ElasticsearchInternalServiceSettings updateServiceSettings(Map<String, Object> serviceSettings) {
230+
@Override
231+
public ServiceSettings updateServiceSettings(Map<String, Object> serviceSettings) {
231232
var validationException = new ValidationException();
232233
var mutableServiceSettings = new HashMap<>(serviceSettings);
233234

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/GoogleVertexAiService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,11 +280,13 @@ protected void doChunkedInfer(
280280
ActionListener<List<ChunkedInference>> listener
281281
) {
282282
GoogleVertexAiModel googleVertexAiModel = (GoogleVertexAiModel) model;
283+
GoogleVertexAiEmbeddingsServiceSettings serviceSettings = (GoogleVertexAiEmbeddingsServiceSettings) googleVertexAiModel
284+
.getServiceSettings();
283285
var actionCreator = new GoogleVertexAiActionCreator(getSender(), getServiceComponents());
284286

285287
List<EmbeddingRequestChunker.BatchRequestAndListener> batchedRequests = new EmbeddingRequestChunker<>(
286288
inputs,
287-
EMBEDDING_MAX_BATCH_SIZE,
289+
serviceSettings.maxBatchSize() == null ? EMBEDDING_MAX_BATCH_SIZE : serviceSettings.maxBatchSize(),
288290
googleVertexAiModel.getConfigurations().getChunkingSettings()
289291
).batchRequestsWithListeners(listener);
290292

@@ -306,6 +308,7 @@ public Model updateModelWithEmbeddingDetails(Model model, int embeddingSize) {
306308
serviceSettings.dimensionsSetByUser(),
307309
serviceSettings.maxInputTokens(),
308310
embeddingSize,
311+
serviceSettings.maxBatchSize(),
309312
serviceSettings.similarity(),
310313
serviceSettings.rateLimitSettings()
311314
);

0 commit comments

Comments
 (0)