Skip to content

[ML] Remove Elastic Inference Service feature flag and deprecated setting #120842

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jan 28, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Remove Inference Service feature flag and deprecated setting
  • Loading branch information
demjened committed Jan 28, 2025
commit 71152aae59d6fca0cbfccc62b0cfb04425ece89a
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
import org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceFeature;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

Expand All @@ -28,27 +26,23 @@ public class InferenceGetServicesIT extends BaseMockEISAuthServerTest {
@SuppressWarnings("unchecked")
public void testGetServicesWithoutTaskType() throws IOException {
List<Object> services = getAllServices();
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
assertThat(services.size(), equalTo(19));
} else {
assertThat(services.size(), equalTo(18));
}
assertThat(services.size(), equalTo(19));

String[] providers = new String[services.size()];
for (int i = 0; i < services.size(); i++) {
Map<String, Object> serviceConfig = (Map<String, Object>) services.get(i);
providers[i] = (String) serviceConfig.get("service");
}

var providerList = new ArrayList<>(
Arrays.asList(
assertArrayEquals(
List.of(
"alibabacloud-ai-search",
"amazonbedrock",
"anthropic",
"azureaistudio",
"azureopenai",
"cohere",
"elastic",
"elasticsearch",
"googleaistudio",
"googlevertexai",
Expand All @@ -61,13 +55,9 @@ public void testGetServicesWithoutTaskType() throws IOException {
"test_service",
"text_embedding_test_service",
"watsonxai"
)
).toArray(),
providers
);
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
providerList.add(6, "elastic");
}
assertArrayEquals(providerList.toArray(), providers);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -130,72 +120,48 @@ public void testGetServicesWithCompletionTaskType() throws IOException {
providers[i] = (String) serviceConfig.get("service");
}

var providerList = new ArrayList<>(
List.of(
"alibabacloud-ai-search",
"amazonbedrock",
"anthropic",
"azureaistudio",
"azureopenai",
"cohere",
"googleaistudio",
"openai",
"streaming_completion_test_service"
)
);

assertArrayEquals(providers, providerList.toArray());
assertArrayEquals(List.of(
"alibabacloud-ai-search",
"amazonbedrock",
"anthropic",
"azureaistudio",
"azureopenai",
"cohere",
"googleaistudio",
"openai",
"streaming_completion_test_service"
).toArray(), providers);
}

@SuppressWarnings("unchecked")
public void testGetServicesWithChatCompletionTaskType() throws IOException {
List<Object> services = getServices(TaskType.CHAT_COMPLETION);
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
assertThat(services.size(), equalTo(3));
} else {
assertThat(services.size(), equalTo(2));
}
assertThat(services.size(), equalTo(3));

String[] providers = new String[services.size()];
for (int i = 0; i < services.size(); i++) {
Map<String, Object> serviceConfig = (Map<String, Object>) services.get(i);
providers[i] = (String) serviceConfig.get("service");
}

var providerList = new ArrayList<>(List.of("openai", "streaming_completion_test_service"));

if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
providerList.addFirst("elastic");
}

assertArrayEquals(providers, providerList.toArray());
assertArrayEquals(List.of("elastic", "openai", "streaming_completion_test_service").toArray(), providers);
}

@SuppressWarnings("unchecked")
public void testGetServicesWithSparseEmbeddingTaskType() throws IOException {
List<Object> services = getServices(TaskType.SPARSE_EMBEDDING);

if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
assertThat(services.size(), equalTo(5));
} else {
assertThat(services.size(), equalTo(4));
}
assertThat(services.size(), equalTo(5));

String[] providers = new String[services.size()];
for (int i = 0; i < services.size(); i++) {
Map<String, Object> serviceConfig = (Map<String, Object>) services.get(i);
providers[i] = (String) serviceConfig.get("service");
}

var providerList = new ArrayList<>(Arrays.asList("alibabacloud-ai-search", "elasticsearch", "hugging_face", "test_service"));
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
providerList.add(1, "elastic");
}
assertArrayEquals(providers, providerList.toArray());
assertArrayEquals(
List.of("alibabacloud-ai-search", "elastic", "elasticsearch", "hugging_face", "test_service").toArray(),
providers
);
}

private List<Object> getAllServices() throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,26 +277,25 @@ public Collection<?> createComponents(PluginServices services) {
);
elasicInferenceServiceFactory.set(elasticInferenceServiceRequestSenderFactory);

ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings(settings);
String elasticInferenceUrl = this.getElasticInferenceServiceUrl(inferenceServiceSettings);

var elasticInferenceServiceComponentsInstance = new ElasticInferenceServiceComponents(elasticInferenceUrl);
elasticInferenceServiceComponents.set(elasticInferenceServiceComponentsInstance);

var authorizationHandler = new ElasticInferenceServiceAuthorizationHandler(
elasticInferenceServiceComponentsInstance.elasticInferenceServiceUrl(),
services.threadPool()
);

inferenceServices.add(
() -> List.of(
context -> new ElasticInferenceService(
elasicInferenceServiceFactory.get(),
serviceComponents.get(),
elasticInferenceServiceComponentsInstance,
modelRegistry,
authorizationHandler
)
ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings(settings);
String elasticInferenceUrl = inferenceServiceSettings.getElasticInferenceServiceUrl();

var elasticInferenceServiceComponentsInstance = new ElasticInferenceServiceComponents(elasticInferenceUrl);
elasticInferenceServiceComponents.set(elasticInferenceServiceComponentsInstance);

var authorizationHandler = new ElasticInferenceServiceAuthorizationHandler(
elasticInferenceServiceComponentsInstance.elasticInferenceServiceUrl(),
services.threadPool()
);

inferenceServices.add(
() -> List.of(
context -> new ElasticInferenceService(
elasicInferenceServiceFactory.get(),
serviceComponents.get(),
elasticInferenceServiceComponentsInstance,
modelRegistry,
authorizationHandler
)
)
);
Expand Down Expand Up @@ -497,12 +496,6 @@ public Map<String, Highlighter> getHighlighters() {
return Map.of(SemanticTextHighlighter.NAME, new SemanticTextHighlighter());
}

// Get Elastic Inference service URL based on feature flags to support transitioning
// to the new Elastic Inference Service URL.
private String getElasticInferenceServiceUrl(ElasticInferenceServiceSettings settings) {
return settings.getElasticInferenceServiceUrl();
}

protected SSLService getSslService() {
return XPackPlugin.getSharedSslService();
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,16 @@
*/
public class ElasticInferenceServiceSettings {

// TODO when we remove this look at InferenceGetServicesIT and remove the setting there as well
@Deprecated
static final Setting<String> EIS_GATEWAY_URL = Setting.simpleString("xpack.inference.eis.gateway.url", Setting.Property.NodeScope);

public static final String ELASTIC_INFERENCE_SERVICE_SSL_CONFIGURATION_PREFIX = "xpack.inference.elastic.http.ssl.";

static final Setting<String> ELASTIC_INFERENCE_SERVICE_URL = Setting.simpleString(
"xpack.inference.elastic.url",
Setting.Property.NodeScope
);

// Adjust this variable to be volatile, if the setting can be updated at some point in time
@Deprecated
private final String eisGatewayUrl;

private final String elasticInferenceServiceUrl;

public ElasticInferenceServiceSettings(Settings settings) {
eisGatewayUrl = EIS_GATEWAY_URL.get(settings);
elasticInferenceServiceUrl = ELASTIC_INFERENCE_SERVICE_URL.get(settings);
}

Expand All @@ -55,19 +46,13 @@ public ElasticInferenceServiceSettings(Settings settings) {

public static List<Setting<?>> getSettingsDefinitions() {
ArrayList<Setting<?>> settings = new ArrayList<>();
settings.add(EIS_GATEWAY_URL);
settings.add(ELASTIC_INFERENCE_SERVICE_URL);
settings.add(ELASTIC_INFERENCE_SERVICE_SSL_ENABLED);
settings.addAll(ELASTIC_INFERENCE_SERVICE_SSL_CONFIGURATION_SETTINGS.getEnabledSettings());

return settings;
}

@Deprecated
public String getEisGatewayUrl() {
return eisGatewayUrl;
}

public String getElasticInferenceServiceUrl() {
return elasticInferenceServiceUrl;
}
Expand Down

This file was deleted.