private static ModelConfigOuterClass.ModelConfig generateConfigFromEvaluatorOptions(
            String modelPaths, OnnxEvaluatorOptions options) {
        // Similar to EmbeddedOnnxRuntime.overrideOptions(), relies on Triton to fall back to CPU if GPU is not available.
        var kind = options.gpuDeviceRequired()
                ? ModelConfigOuterClass.ModelInstanceGroup.Kind.KIND_GPU
                : (options.gpuDeviceNumber() >= 0)
                        ? ModelConfigOuterClass.ModelInstanceGroup.Kind.KIND_AUTO
                        : ModelConfigOuterClass.ModelInstanceGroup.Kind.KIND_CPU;
        return ModelConfigOuterClass.ModelConfig.newBuilder()
                .setName(modelName(modelPaths))
                .addInstanceGroup(ModelConfigOuterClass.ModelInstanceGroup.newBuilder()
                        .setCount(1)
                        .setKind(kind)
                        .build())
                .setPlatform("onnxruntime_onnx")
                .setMaxBatchSize(0)
                .putParameters("enable_mem_area", ModelConfigOuterClass.ModelParameter.newBuilder()
                        .setStringValue("0")
                        .build())
                .putParameters("enable_mem_pattern", ModelConfigOuterClass.ModelParameter.newBuilder()
                        .setStringValue("0")
                        .build())
                .putParameters("intra_op_thread_count", ModelConfigOuterClass.ModelParameter.newBuilder()
                        .setStringValue(Integer.toString(options.intraOpThreads()))
                        .build())
                .putParameters("inter_op_thread_count", ModelConfigOuterClass.ModelParameter.newBuilder()
                        .setStringValue(Integer.toString(options.interOpThreads()))
                        .build())
                .build();
    }
Copies the model file to the model repository and serializes the config
model-integration/src/main/java/ai/vespa/triton/TritonOnnxRuntime.java