pulumiverse-scaleway 1.27.1__py3-none-any.whl → 1.28.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pulumiverse_scaleway/__init__.py +16 -0
- pulumiverse_scaleway/_inputs.py +498 -6
- pulumiverse_scaleway/baremetal_server.py +48 -258
- pulumiverse_scaleway/database_instance.py +42 -21
- pulumiverse_scaleway/databases/_inputs.py +54 -0
- pulumiverse_scaleway/databases/get_instance.py +12 -1
- pulumiverse_scaleway/databases/instance.py +42 -21
- pulumiverse_scaleway/databases/outputs.py +62 -0
- pulumiverse_scaleway/databases/snapshot.py +2 -2
- pulumiverse_scaleway/elasticmetal/_inputs.py +74 -0
- pulumiverse_scaleway/elasticmetal/get_server.py +12 -1
- pulumiverse_scaleway/elasticmetal/outputs.py +87 -0
- pulumiverse_scaleway/elasticmetal/server.py +48 -258
- pulumiverse_scaleway/get_baremetal_server.py +12 -1
- pulumiverse_scaleway/get_cockpit_plan.py +2 -38
- pulumiverse_scaleway/get_database_instance.py +12 -1
- pulumiverse_scaleway/get_instance_private_nic.py +13 -1
- pulumiverse_scaleway/get_instance_server.py +12 -1
- pulumiverse_scaleway/get_lb_route.py +12 -1
- pulumiverse_scaleway/get_loadbalancer.py +12 -1
- pulumiverse_scaleway/get_redis_cluster.py +12 -1
- pulumiverse_scaleway/get_vpc_gateway_network.py +12 -1
- pulumiverse_scaleway/inference/__init__.py +2 -0
- pulumiverse_scaleway/inference/_inputs.py +128 -0
- pulumiverse_scaleway/inference/deployment.py +70 -55
- pulumiverse_scaleway/inference/get_model.py +299 -0
- pulumiverse_scaleway/inference/model.py +683 -0
- pulumiverse_scaleway/inference/outputs.py +184 -0
- pulumiverse_scaleway/inference_deployment.py +70 -55
- pulumiverse_scaleway/instance/_inputs.py +108 -0
- pulumiverse_scaleway/instance/get_private_nic.py +13 -1
- pulumiverse_scaleway/instance/get_server.py +12 -1
- pulumiverse_scaleway/instance/outputs.py +124 -0
- pulumiverse_scaleway/instance/private_nic.py +30 -0
- pulumiverse_scaleway/instance/server.py +28 -0
- pulumiverse_scaleway/instance_private_nic.py +30 -0
- pulumiverse_scaleway/instance_server.py +28 -0
- pulumiverse_scaleway/kubernetes/__init__.py +1 -0
- pulumiverse_scaleway/kubernetes/_inputs.py +203 -0
- pulumiverse_scaleway/kubernetes/acl.py +446 -0
- pulumiverse_scaleway/kubernetes/outputs.py +195 -1
- pulumiverse_scaleway/loadbalancer.py +28 -0
- pulumiverse_scaleway/loadbalancer_route.py +138 -14
- pulumiverse_scaleway/loadbalancers/_inputs.py +54 -0
- pulumiverse_scaleway/loadbalancers/get_load_balancer.py +12 -1
- pulumiverse_scaleway/loadbalancers/get_route.py +12 -1
- pulumiverse_scaleway/loadbalancers/load_balancer.py +28 -0
- pulumiverse_scaleway/loadbalancers/outputs.py +62 -0
- pulumiverse_scaleway/loadbalancers/route.py +138 -14
- pulumiverse_scaleway/mnq/sns_credentials.py +7 -7
- pulumiverse_scaleway/mnq/sqs_credentials.py +7 -7
- pulumiverse_scaleway/mnq_sns_credentials.py +7 -7
- pulumiverse_scaleway/mnq_sqs_credentials.py +7 -7
- pulumiverse_scaleway/network/_inputs.py +54 -0
- pulumiverse_scaleway/network/gateway_network.py +28 -0
- pulumiverse_scaleway/network/get_gateway_network.py +12 -1
- pulumiverse_scaleway/network/outputs.py +62 -0
- pulumiverse_scaleway/network/route.py +90 -2
- pulumiverse_scaleway/observability/get_plan.py +2 -38
- pulumiverse_scaleway/outputs.py +574 -5
- pulumiverse_scaleway/pulumi-plugin.json +1 -1
- pulumiverse_scaleway/rdb_snapshot.py +2 -2
- pulumiverse_scaleway/redis/_inputs.py +60 -6
- pulumiverse_scaleway/redis/cluster.py +28 -0
- pulumiverse_scaleway/redis/get_cluster.py +12 -1
- pulumiverse_scaleway/redis/outputs.py +66 -4
- pulumiverse_scaleway/redis_cluster.py +28 -0
- pulumiverse_scaleway/vpc_gateway_network.py +28 -0
- pulumiverse_scaleway/vpc_route.py +90 -2
- {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/METADATA +1 -1
- {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/RECORD +73 -70
- {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/WHEEL +1 -1
- {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/top_level.txt +0 -0
@@ -13,10 +13,15 @@ if sys.version_info >= (3, 11):
|
|
13
13
|
else:
|
14
14
|
from typing_extensions import NotRequired, TypedDict, TypeAlias
|
15
15
|
from .. import _utilities
|
16
|
+
from . import outputs
|
16
17
|
|
17
18
|
__all__ = [
|
18
19
|
'DeploymentPrivateEndpoint',
|
19
20
|
'DeploymentPublicEndpoint',
|
21
|
+
'ModelNodesSupport',
|
22
|
+
'ModelNodesSupportQuantization',
|
23
|
+
'GetModelNodesSupportResult',
|
24
|
+
'GetModelNodesSupportQuantizationResult',
|
20
25
|
]
|
21
26
|
|
22
27
|
@pulumi.output_type
|
@@ -167,3 +172,182 @@ class DeploymentPublicEndpoint(dict):
|
|
167
172
|
return pulumi.get(self, "url")
|
168
173
|
|
169
174
|
|
175
|
+
@pulumi.output_type
|
176
|
+
class ModelNodesSupport(dict):
|
177
|
+
@staticmethod
|
178
|
+
def __key_warning(key: str):
|
179
|
+
suggest = None
|
180
|
+
if key == "nodeTypeName":
|
181
|
+
suggest = "node_type_name"
|
182
|
+
|
183
|
+
if suggest:
|
184
|
+
pulumi.log.warn(f"Key '{key}' not found in ModelNodesSupport. Access the value via the '{suggest}' property getter instead.")
|
185
|
+
|
186
|
+
def __getitem__(self, key: str) -> Any:
|
187
|
+
ModelNodesSupport.__key_warning(key)
|
188
|
+
return super().__getitem__(key)
|
189
|
+
|
190
|
+
def get(self, key: str, default = None) -> Any:
|
191
|
+
ModelNodesSupport.__key_warning(key)
|
192
|
+
return super().get(key, default)
|
193
|
+
|
194
|
+
def __init__(__self__, *,
|
195
|
+
node_type_name: Optional[str] = None,
|
196
|
+
quantizations: Optional[Sequence['outputs.ModelNodesSupportQuantization']] = None):
|
197
|
+
"""
|
198
|
+
:param str node_type_name: The type of node supported.
|
199
|
+
:param Sequence['ModelNodesSupportQuantizationArgs'] quantizations: A list of supported quantization options, including:
|
200
|
+
"""
|
201
|
+
if node_type_name is not None:
|
202
|
+
pulumi.set(__self__, "node_type_name", node_type_name)
|
203
|
+
if quantizations is not None:
|
204
|
+
pulumi.set(__self__, "quantizations", quantizations)
|
205
|
+
|
206
|
+
@property
|
207
|
+
@pulumi.getter(name="nodeTypeName")
|
208
|
+
def node_type_name(self) -> Optional[str]:
|
209
|
+
"""
|
210
|
+
The type of node supported.
|
211
|
+
"""
|
212
|
+
return pulumi.get(self, "node_type_name")
|
213
|
+
|
214
|
+
@property
|
215
|
+
@pulumi.getter
|
216
|
+
def quantizations(self) -> Optional[Sequence['outputs.ModelNodesSupportQuantization']]:
|
217
|
+
"""
|
218
|
+
A list of supported quantization options, including:
|
219
|
+
"""
|
220
|
+
return pulumi.get(self, "quantizations")
|
221
|
+
|
222
|
+
|
223
|
+
@pulumi.output_type
|
224
|
+
class ModelNodesSupportQuantization(dict):
|
225
|
+
@staticmethod
|
226
|
+
def __key_warning(key: str):
|
227
|
+
suggest = None
|
228
|
+
if key == "maxContextSize":
|
229
|
+
suggest = "max_context_size"
|
230
|
+
elif key == "quantizationBits":
|
231
|
+
suggest = "quantization_bits"
|
232
|
+
|
233
|
+
if suggest:
|
234
|
+
pulumi.log.warn(f"Key '{key}' not found in ModelNodesSupportQuantization. Access the value via the '{suggest}' property getter instead.")
|
235
|
+
|
236
|
+
def __getitem__(self, key: str) -> Any:
|
237
|
+
ModelNodesSupportQuantization.__key_warning(key)
|
238
|
+
return super().__getitem__(key)
|
239
|
+
|
240
|
+
def get(self, key: str, default = None) -> Any:
|
241
|
+
ModelNodesSupportQuantization.__key_warning(key)
|
242
|
+
return super().get(key, default)
|
243
|
+
|
244
|
+
def __init__(__self__, *,
|
245
|
+
allowed: Optional[bool] = None,
|
246
|
+
max_context_size: Optional[int] = None,
|
247
|
+
quantization_bits: Optional[int] = None):
|
248
|
+
"""
|
249
|
+
:param bool allowed: Whether this quantization is allowed.
|
250
|
+
:param int max_context_size: Maximum context length supported by this quantization.
|
251
|
+
:param int quantization_bits: Number of bits used for quantization (e.g., 8, 16).
|
252
|
+
"""
|
253
|
+
if allowed is not None:
|
254
|
+
pulumi.set(__self__, "allowed", allowed)
|
255
|
+
if max_context_size is not None:
|
256
|
+
pulumi.set(__self__, "max_context_size", max_context_size)
|
257
|
+
if quantization_bits is not None:
|
258
|
+
pulumi.set(__self__, "quantization_bits", quantization_bits)
|
259
|
+
|
260
|
+
@property
|
261
|
+
@pulumi.getter
|
262
|
+
def allowed(self) -> Optional[bool]:
|
263
|
+
"""
|
264
|
+
Whether this quantization is allowed.
|
265
|
+
"""
|
266
|
+
return pulumi.get(self, "allowed")
|
267
|
+
|
268
|
+
@property
|
269
|
+
@pulumi.getter(name="maxContextSize")
|
270
|
+
def max_context_size(self) -> Optional[int]:
|
271
|
+
"""
|
272
|
+
Maximum context length supported by this quantization.
|
273
|
+
"""
|
274
|
+
return pulumi.get(self, "max_context_size")
|
275
|
+
|
276
|
+
@property
|
277
|
+
@pulumi.getter(name="quantizationBits")
|
278
|
+
def quantization_bits(self) -> Optional[int]:
|
279
|
+
"""
|
280
|
+
Number of bits used for quantization (e.g., 8, 16).
|
281
|
+
"""
|
282
|
+
return pulumi.get(self, "quantization_bits")
|
283
|
+
|
284
|
+
|
285
|
+
@pulumi.output_type
|
286
|
+
class GetModelNodesSupportResult(dict):
|
287
|
+
def __init__(__self__, *,
|
288
|
+
node_type_name: str,
|
289
|
+
quantizations: Sequence['outputs.GetModelNodesSupportQuantizationResult']):
|
290
|
+
"""
|
291
|
+
:param str node_type_name: The type of node supported.
|
292
|
+
:param Sequence['GetModelNodesSupportQuantizationArgs'] quantizations: A list of supported quantization options, including:
|
293
|
+
"""
|
294
|
+
pulumi.set(__self__, "node_type_name", node_type_name)
|
295
|
+
pulumi.set(__self__, "quantizations", quantizations)
|
296
|
+
|
297
|
+
@property
|
298
|
+
@pulumi.getter(name="nodeTypeName")
|
299
|
+
def node_type_name(self) -> str:
|
300
|
+
"""
|
301
|
+
The type of node supported.
|
302
|
+
"""
|
303
|
+
return pulumi.get(self, "node_type_name")
|
304
|
+
|
305
|
+
@property
|
306
|
+
@pulumi.getter
|
307
|
+
def quantizations(self) -> Sequence['outputs.GetModelNodesSupportQuantizationResult']:
|
308
|
+
"""
|
309
|
+
A list of supported quantization options, including:
|
310
|
+
"""
|
311
|
+
return pulumi.get(self, "quantizations")
|
312
|
+
|
313
|
+
|
314
|
+
@pulumi.output_type
|
315
|
+
class GetModelNodesSupportQuantizationResult(dict):
|
316
|
+
def __init__(__self__, *,
|
317
|
+
allowed: bool,
|
318
|
+
max_context_size: int,
|
319
|
+
quantization_bits: int):
|
320
|
+
"""
|
321
|
+
:param bool allowed: Whether this quantization is allowed.
|
322
|
+
:param int max_context_size: Maximum context length supported by this quantization.
|
323
|
+
:param int quantization_bits: Number of bits used for quantization (e.g., 8, 16).
|
324
|
+
"""
|
325
|
+
pulumi.set(__self__, "allowed", allowed)
|
326
|
+
pulumi.set(__self__, "max_context_size", max_context_size)
|
327
|
+
pulumi.set(__self__, "quantization_bits", quantization_bits)
|
328
|
+
|
329
|
+
@property
|
330
|
+
@pulumi.getter
|
331
|
+
def allowed(self) -> bool:
|
332
|
+
"""
|
333
|
+
Whether this quantization is allowed.
|
334
|
+
"""
|
335
|
+
return pulumi.get(self, "allowed")
|
336
|
+
|
337
|
+
@property
|
338
|
+
@pulumi.getter(name="maxContextSize")
|
339
|
+
def max_context_size(self) -> int:
|
340
|
+
"""
|
341
|
+
Maximum context length supported by this quantization.
|
342
|
+
"""
|
343
|
+
return pulumi.get(self, "max_context_size")
|
344
|
+
|
345
|
+
@property
|
346
|
+
@pulumi.getter(name="quantizationBits")
|
347
|
+
def quantization_bits(self) -> int:
|
348
|
+
"""
|
349
|
+
Number of bits used for quantization (e.g., 8, 16).
|
350
|
+
"""
|
351
|
+
return pulumi.get(self, "quantization_bits")
|
352
|
+
|
353
|
+
|
@@ -21,7 +21,7 @@ __all__ = ['InferenceDeploymentArgs', 'InferenceDeployment']
|
|
21
21
|
@pulumi.input_type
|
22
22
|
class InferenceDeploymentArgs:
|
23
23
|
def __init__(__self__, *,
|
24
|
-
|
24
|
+
model_id: pulumi.Input[str],
|
25
25
|
node_type: pulumi.Input[str],
|
26
26
|
accept_eula: Optional[pulumi.Input[bool]] = None,
|
27
27
|
max_size: Optional[pulumi.Input[int]] = None,
|
@@ -30,11 +30,12 @@ class InferenceDeploymentArgs:
|
|
30
30
|
private_endpoint: Optional[pulumi.Input['InferenceDeploymentPrivateEndpointArgs']] = None,
|
31
31
|
project_id: Optional[pulumi.Input[str]] = None,
|
32
32
|
public_endpoint: Optional[pulumi.Input['InferenceDeploymentPublicEndpointArgs']] = None,
|
33
|
+
quantization: Optional[pulumi.Input[int]] = None,
|
33
34
|
region: Optional[pulumi.Input[str]] = None,
|
34
35
|
tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
|
35
36
|
"""
|
36
37
|
The set of arguments for constructing a InferenceDeployment resource.
|
37
|
-
:param pulumi.Input[str]
|
38
|
+
:param pulumi.Input[str] model_id: The model id used for the deployment.
|
38
39
|
:param pulumi.Input[str] node_type: The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)
|
39
40
|
:param pulumi.Input[bool] accept_eula: Some models (e.g Meta Llama) require end-user license agreements. Set `true` to accept.
|
40
41
|
:param pulumi.Input[int] max_size: The maximum size of the pool.
|
@@ -43,10 +44,11 @@ class InferenceDeploymentArgs:
|
|
43
44
|
:param pulumi.Input['InferenceDeploymentPrivateEndpointArgs'] private_endpoint: Configuration of the deployment's private endpoint.
|
44
45
|
:param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
|
45
46
|
:param pulumi.Input['InferenceDeploymentPublicEndpointArgs'] public_endpoint: Configuration of the deployment's public endpoint.
|
47
|
+
:param pulumi.Input[int] quantization: The number of bits each model parameter should be quantized to
|
46
48
|
:param pulumi.Input[str] region: `region`) The region in which the deployment is created.
|
47
49
|
:param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the deployment.
|
48
50
|
"""
|
49
|
-
pulumi.set(__self__, "
|
51
|
+
pulumi.set(__self__, "model_id", model_id)
|
50
52
|
pulumi.set(__self__, "node_type", node_type)
|
51
53
|
if accept_eula is not None:
|
52
54
|
pulumi.set(__self__, "accept_eula", accept_eula)
|
@@ -62,22 +64,24 @@ class InferenceDeploymentArgs:
|
|
62
64
|
pulumi.set(__self__, "project_id", project_id)
|
63
65
|
if public_endpoint is not None:
|
64
66
|
pulumi.set(__self__, "public_endpoint", public_endpoint)
|
67
|
+
if quantization is not None:
|
68
|
+
pulumi.set(__self__, "quantization", quantization)
|
65
69
|
if region is not None:
|
66
70
|
pulumi.set(__self__, "region", region)
|
67
71
|
if tags is not None:
|
68
72
|
pulumi.set(__self__, "tags", tags)
|
69
73
|
|
70
74
|
@property
|
71
|
-
@pulumi.getter(name="
|
72
|
-
def
|
75
|
+
@pulumi.getter(name="modelId")
|
76
|
+
def model_id(self) -> pulumi.Input[str]:
|
73
77
|
"""
|
74
|
-
The model
|
78
|
+
The model id used for the deployment.
|
75
79
|
"""
|
76
|
-
return pulumi.get(self, "
|
80
|
+
return pulumi.get(self, "model_id")
|
77
81
|
|
78
|
-
@
|
79
|
-
def
|
80
|
-
pulumi.set(self, "
|
82
|
+
@model_id.setter
|
83
|
+
def model_id(self, value: pulumi.Input[str]):
|
84
|
+
pulumi.set(self, "model_id", value)
|
81
85
|
|
82
86
|
@property
|
83
87
|
@pulumi.getter(name="nodeType")
|
@@ -175,6 +179,18 @@ class InferenceDeploymentArgs:
|
|
175
179
|
def public_endpoint(self, value: Optional[pulumi.Input['InferenceDeploymentPublicEndpointArgs']]):
|
176
180
|
pulumi.set(self, "public_endpoint", value)
|
177
181
|
|
182
|
+
@property
|
183
|
+
@pulumi.getter
|
184
|
+
def quantization(self) -> Optional[pulumi.Input[int]]:
|
185
|
+
"""
|
186
|
+
The number of bits each model parameter should be quantized to
|
187
|
+
"""
|
188
|
+
return pulumi.get(self, "quantization")
|
189
|
+
|
190
|
+
@quantization.setter
|
191
|
+
def quantization(self, value: Optional[pulumi.Input[int]]):
|
192
|
+
pulumi.set(self, "quantization", value)
|
193
|
+
|
178
194
|
@property
|
179
195
|
@pulumi.getter
|
180
196
|
def region(self) -> Optional[pulumi.Input[str]]:
|
@@ -214,6 +230,7 @@ class _InferenceDeploymentState:
|
|
214
230
|
private_endpoint: Optional[pulumi.Input['InferenceDeploymentPrivateEndpointArgs']] = None,
|
215
231
|
project_id: Optional[pulumi.Input[str]] = None,
|
216
232
|
public_endpoint: Optional[pulumi.Input['InferenceDeploymentPublicEndpointArgs']] = None,
|
233
|
+
quantization: Optional[pulumi.Input[int]] = None,
|
217
234
|
region: Optional[pulumi.Input[str]] = None,
|
218
235
|
size: Optional[pulumi.Input[int]] = None,
|
219
236
|
status: Optional[pulumi.Input[str]] = None,
|
@@ -226,12 +243,13 @@ class _InferenceDeploymentState:
|
|
226
243
|
:param pulumi.Input[int] max_size: The maximum size of the pool.
|
227
244
|
:param pulumi.Input[int] min_size: The minimum size of the pool.
|
228
245
|
:param pulumi.Input[str] model_id: The model id used for the deployment.
|
229
|
-
:param pulumi.Input[str] model_name: The model name
|
246
|
+
:param pulumi.Input[str] model_name: The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
|
230
247
|
:param pulumi.Input[str] name: The deployment name.
|
231
248
|
:param pulumi.Input[str] node_type: The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)
|
232
249
|
:param pulumi.Input['InferenceDeploymentPrivateEndpointArgs'] private_endpoint: Configuration of the deployment's private endpoint.
|
233
250
|
:param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
|
234
251
|
:param pulumi.Input['InferenceDeploymentPublicEndpointArgs'] public_endpoint: Configuration of the deployment's public endpoint.
|
252
|
+
:param pulumi.Input[int] quantization: The number of bits each model parameter should be quantized to
|
235
253
|
:param pulumi.Input[str] region: `region`) The region in which the deployment is created.
|
236
254
|
:param pulumi.Input[int] size: The size of the pool.
|
237
255
|
:param pulumi.Input[str] status: The status of the deployment.
|
@@ -260,6 +278,8 @@ class _InferenceDeploymentState:
|
|
260
278
|
pulumi.set(__self__, "project_id", project_id)
|
261
279
|
if public_endpoint is not None:
|
262
280
|
pulumi.set(__self__, "public_endpoint", public_endpoint)
|
281
|
+
if quantization is not None:
|
282
|
+
pulumi.set(__self__, "quantization", quantization)
|
263
283
|
if region is not None:
|
264
284
|
pulumi.set(__self__, "region", region)
|
265
285
|
if size is not None:
|
@@ -335,7 +355,7 @@ class _InferenceDeploymentState:
|
|
335
355
|
@pulumi.getter(name="modelName")
|
336
356
|
def model_name(self) -> Optional[pulumi.Input[str]]:
|
337
357
|
"""
|
338
|
-
The model name
|
358
|
+
The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
|
339
359
|
"""
|
340
360
|
return pulumi.get(self, "model_name")
|
341
361
|
|
@@ -403,6 +423,18 @@ class _InferenceDeploymentState:
|
|
403
423
|
def public_endpoint(self, value: Optional[pulumi.Input['InferenceDeploymentPublicEndpointArgs']]):
|
404
424
|
pulumi.set(self, "public_endpoint", value)
|
405
425
|
|
426
|
+
@property
|
427
|
+
@pulumi.getter
|
428
|
+
def quantization(self) -> Optional[pulumi.Input[int]]:
|
429
|
+
"""
|
430
|
+
The number of bits each model parameter should be quantized to
|
431
|
+
"""
|
432
|
+
return pulumi.get(self, "quantization")
|
433
|
+
|
434
|
+
@quantization.setter
|
435
|
+
def quantization(self, value: Optional[pulumi.Input[int]]):
|
436
|
+
pulumi.set(self, "quantization", value)
|
437
|
+
|
406
438
|
@property
|
407
439
|
@pulumi.getter
|
408
440
|
def region(self) -> Optional[pulumi.Input[str]]:
|
@@ -477,12 +509,13 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
477
509
|
accept_eula: Optional[pulumi.Input[bool]] = None,
|
478
510
|
max_size: Optional[pulumi.Input[int]] = None,
|
479
511
|
min_size: Optional[pulumi.Input[int]] = None,
|
480
|
-
|
512
|
+
model_id: Optional[pulumi.Input[str]] = None,
|
481
513
|
name: Optional[pulumi.Input[str]] = None,
|
482
514
|
node_type: Optional[pulumi.Input[str]] = None,
|
483
515
|
private_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']]] = None,
|
484
516
|
project_id: Optional[pulumi.Input[str]] = None,
|
485
517
|
public_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']]] = None,
|
518
|
+
quantization: Optional[pulumi.Input[int]] = None,
|
486
519
|
region: Optional[pulumi.Input[str]] = None,
|
487
520
|
tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
488
521
|
__props__=None):
|
@@ -492,22 +525,6 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
492
525
|
|
493
526
|
## Example Usage
|
494
527
|
|
495
|
-
### Basic
|
496
|
-
|
497
|
-
```python
|
498
|
-
import pulumi
|
499
|
-
import pulumiverse_scaleway as scaleway
|
500
|
-
|
501
|
-
deployment = scaleway.inference.Deployment("deployment",
|
502
|
-
name="tf-inference-deployment",
|
503
|
-
node_type="L4",
|
504
|
-
model_name="meta/llama-3.1-8b-instruct:fp8",
|
505
|
-
public_endpoint={
|
506
|
-
"is_enabled": True,
|
507
|
-
},
|
508
|
-
accept_eula=True)
|
509
|
-
```
|
510
|
-
|
511
528
|
## Import
|
512
529
|
|
513
530
|
Functions can be imported using, `{region}/{id}`, as shown below:
|
@@ -523,12 +540,13 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
523
540
|
:param pulumi.Input[bool] accept_eula: Some models (e.g Meta Llama) require end-user license agreements. Set `true` to accept.
|
524
541
|
:param pulumi.Input[int] max_size: The maximum size of the pool.
|
525
542
|
:param pulumi.Input[int] min_size: The minimum size of the pool.
|
526
|
-
:param pulumi.Input[str]
|
543
|
+
:param pulumi.Input[str] model_id: The model id used for the deployment.
|
527
544
|
:param pulumi.Input[str] name: The deployment name.
|
528
545
|
:param pulumi.Input[str] node_type: The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)
|
529
546
|
:param pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']] private_endpoint: Configuration of the deployment's private endpoint.
|
530
547
|
:param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
|
531
548
|
:param pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']] public_endpoint: Configuration of the deployment's public endpoint.
|
549
|
+
:param pulumi.Input[int] quantization: The number of bits each model parameter should be quantized to
|
532
550
|
:param pulumi.Input[str] region: `region`) The region in which the deployment is created.
|
533
551
|
:param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the deployment.
|
534
552
|
"""
|
@@ -544,22 +562,6 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
544
562
|
|
545
563
|
## Example Usage
|
546
564
|
|
547
|
-
### Basic
|
548
|
-
|
549
|
-
```python
|
550
|
-
import pulumi
|
551
|
-
import pulumiverse_scaleway as scaleway
|
552
|
-
|
553
|
-
deployment = scaleway.inference.Deployment("deployment",
|
554
|
-
name="tf-inference-deployment",
|
555
|
-
node_type="L4",
|
556
|
-
model_name="meta/llama-3.1-8b-instruct:fp8",
|
557
|
-
public_endpoint={
|
558
|
-
"is_enabled": True,
|
559
|
-
},
|
560
|
-
accept_eula=True)
|
561
|
-
```
|
562
|
-
|
563
565
|
## Import
|
564
566
|
|
565
567
|
Functions can be imported using, `{region}/{id}`, as shown below:
|
@@ -588,12 +590,13 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
588
590
|
accept_eula: Optional[pulumi.Input[bool]] = None,
|
589
591
|
max_size: Optional[pulumi.Input[int]] = None,
|
590
592
|
min_size: Optional[pulumi.Input[int]] = None,
|
591
|
-
|
593
|
+
model_id: Optional[pulumi.Input[str]] = None,
|
592
594
|
name: Optional[pulumi.Input[str]] = None,
|
593
595
|
node_type: Optional[pulumi.Input[str]] = None,
|
594
596
|
private_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']]] = None,
|
595
597
|
project_id: Optional[pulumi.Input[str]] = None,
|
596
598
|
public_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']]] = None,
|
599
|
+
quantization: Optional[pulumi.Input[int]] = None,
|
597
600
|
region: Optional[pulumi.Input[str]] = None,
|
598
601
|
tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
599
602
|
__props__=None):
|
@@ -609,9 +612,9 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
609
612
|
__props__.__dict__["accept_eula"] = accept_eula
|
610
613
|
__props__.__dict__["max_size"] = max_size
|
611
614
|
__props__.__dict__["min_size"] = min_size
|
612
|
-
if
|
613
|
-
raise TypeError("Missing required property '
|
614
|
-
__props__.__dict__["
|
615
|
+
if model_id is None and not opts.urn:
|
616
|
+
raise TypeError("Missing required property 'model_id'")
|
617
|
+
__props__.__dict__["model_id"] = model_id
|
615
618
|
__props__.__dict__["name"] = name
|
616
619
|
if node_type is None and not opts.urn:
|
617
620
|
raise TypeError("Missing required property 'node_type'")
|
@@ -619,10 +622,11 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
619
622
|
__props__.__dict__["private_endpoint"] = private_endpoint
|
620
623
|
__props__.__dict__["project_id"] = project_id
|
621
624
|
__props__.__dict__["public_endpoint"] = public_endpoint
|
625
|
+
__props__.__dict__["quantization"] = quantization
|
622
626
|
__props__.__dict__["region"] = region
|
623
627
|
__props__.__dict__["tags"] = tags
|
624
628
|
__props__.__dict__["created_at"] = None
|
625
|
-
__props__.__dict__["
|
629
|
+
__props__.__dict__["model_name"] = None
|
626
630
|
__props__.__dict__["size"] = None
|
627
631
|
__props__.__dict__["status"] = None
|
628
632
|
__props__.__dict__["updated_at"] = None
|
@@ -647,6 +651,7 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
647
651
|
private_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']]] = None,
|
648
652
|
project_id: Optional[pulumi.Input[str]] = None,
|
649
653
|
public_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']]] = None,
|
654
|
+
quantization: Optional[pulumi.Input[int]] = None,
|
650
655
|
region: Optional[pulumi.Input[str]] = None,
|
651
656
|
size: Optional[pulumi.Input[int]] = None,
|
652
657
|
status: Optional[pulumi.Input[str]] = None,
|
@@ -664,12 +669,13 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
664
669
|
:param pulumi.Input[int] max_size: The maximum size of the pool.
|
665
670
|
:param pulumi.Input[int] min_size: The minimum size of the pool.
|
666
671
|
:param pulumi.Input[str] model_id: The model id used for the deployment.
|
667
|
-
:param pulumi.Input[str] model_name: The model name
|
672
|
+
:param pulumi.Input[str] model_name: The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
|
668
673
|
:param pulumi.Input[str] name: The deployment name.
|
669
674
|
:param pulumi.Input[str] node_type: The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)
|
670
675
|
:param pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']] private_endpoint: Configuration of the deployment's private endpoint.
|
671
676
|
:param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
|
672
677
|
:param pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']] public_endpoint: Configuration of the deployment's public endpoint.
|
678
|
+
:param pulumi.Input[int] quantization: The number of bits each model parameter should be quantized to
|
673
679
|
:param pulumi.Input[str] region: `region`) The region in which the deployment is created.
|
674
680
|
:param pulumi.Input[int] size: The size of the pool.
|
675
681
|
:param pulumi.Input[str] status: The status of the deployment.
|
@@ -691,6 +697,7 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
691
697
|
__props__.__dict__["private_endpoint"] = private_endpoint
|
692
698
|
__props__.__dict__["project_id"] = project_id
|
693
699
|
__props__.__dict__["public_endpoint"] = public_endpoint
|
700
|
+
__props__.__dict__["quantization"] = quantization
|
694
701
|
__props__.__dict__["region"] = region
|
695
702
|
__props__.__dict__["size"] = size
|
696
703
|
__props__.__dict__["status"] = status
|
@@ -716,7 +723,7 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
716
723
|
|
717
724
|
@property
|
718
725
|
@pulumi.getter(name="maxSize")
|
719
|
-
def max_size(self) -> pulumi.Output[int]:
|
726
|
+
def max_size(self) -> pulumi.Output[Optional[int]]:
|
720
727
|
"""
|
721
728
|
The maximum size of the pool.
|
722
729
|
"""
|
@@ -724,7 +731,7 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
724
731
|
|
725
732
|
@property
|
726
733
|
@pulumi.getter(name="minSize")
|
727
|
-
def min_size(self) -> pulumi.Output[int]:
|
734
|
+
def min_size(self) -> pulumi.Output[Optional[int]]:
|
728
735
|
"""
|
729
736
|
The minimum size of the pool.
|
730
737
|
"""
|
@@ -742,7 +749,7 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
742
749
|
@pulumi.getter(name="modelName")
|
743
750
|
def model_name(self) -> pulumi.Output[str]:
|
744
751
|
"""
|
745
|
-
The model name
|
752
|
+
The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
|
746
753
|
"""
|
747
754
|
return pulumi.get(self, "model_name")
|
748
755
|
|
@@ -786,6 +793,14 @@ class InferenceDeployment(pulumi.CustomResource):
|
|
786
793
|
"""
|
787
794
|
return pulumi.get(self, "public_endpoint")
|
788
795
|
|
796
|
+
@property
|
797
|
+
@pulumi.getter
|
798
|
+
def quantization(self) -> pulumi.Output[Optional[int]]:
|
799
|
+
"""
|
800
|
+
The number of bits each model parameter should be quantized to
|
801
|
+
"""
|
802
|
+
return pulumi.get(self, "quantization")
|
803
|
+
|
789
804
|
@property
|
790
805
|
@pulumi.getter
|
791
806
|
def region(self) -> pulumi.Output[str]:
|
@@ -17,6 +17,8 @@ from .. import _utilities
|
|
17
17
|
__all__ = [
|
18
18
|
'ImageAdditionalVolumeArgs',
|
19
19
|
'ImageAdditionalVolumeArgsDict',
|
20
|
+
'PrivateNicPrivateIpArgs',
|
21
|
+
'PrivateNicPrivateIpArgsDict',
|
20
22
|
'SecurityGroupInboundRuleArgs',
|
21
23
|
'SecurityGroupInboundRuleArgsDict',
|
22
24
|
'SecurityGroupOutboundRuleArgs',
|
@@ -25,6 +27,8 @@ __all__ = [
|
|
25
27
|
'SecurityGroupRulesInboundRuleArgsDict',
|
26
28
|
'SecurityGroupRulesOutboundRuleArgs',
|
27
29
|
'SecurityGroupRulesOutboundRuleArgsDict',
|
30
|
+
'ServerPrivateIpArgs',
|
31
|
+
'ServerPrivateIpArgsDict',
|
28
32
|
'ServerPrivateNetworkArgs',
|
29
33
|
'ServerPrivateNetworkArgsDict',
|
30
34
|
'ServerPublicIpArgs',
|
@@ -309,6 +313,58 @@ class ImageAdditionalVolumeArgs:
|
|
309
313
|
pulumi.set(self, "zone", value)
|
310
314
|
|
311
315
|
|
316
|
+
if not MYPY:
|
317
|
+
class PrivateNicPrivateIpArgsDict(TypedDict):
|
318
|
+
address: NotRequired[pulumi.Input[str]]
|
319
|
+
"""
|
320
|
+
The private IP address.
|
321
|
+
"""
|
322
|
+
id: NotRequired[pulumi.Input[str]]
|
323
|
+
"""
|
324
|
+
The ID of the IP address resource.
|
325
|
+
"""
|
326
|
+
elif False:
|
327
|
+
PrivateNicPrivateIpArgsDict: TypeAlias = Mapping[str, Any]
|
328
|
+
|
329
|
+
@pulumi.input_type
|
330
|
+
class PrivateNicPrivateIpArgs:
|
331
|
+
def __init__(__self__, *,
|
332
|
+
address: Optional[pulumi.Input[str]] = None,
|
333
|
+
id: Optional[pulumi.Input[str]] = None):
|
334
|
+
"""
|
335
|
+
:param pulumi.Input[str] address: The private IP address.
|
336
|
+
:param pulumi.Input[str] id: The ID of the IP address resource.
|
337
|
+
"""
|
338
|
+
if address is not None:
|
339
|
+
pulumi.set(__self__, "address", address)
|
340
|
+
if id is not None:
|
341
|
+
pulumi.set(__self__, "id", id)
|
342
|
+
|
343
|
+
@property
|
344
|
+
@pulumi.getter
|
345
|
+
def address(self) -> Optional[pulumi.Input[str]]:
|
346
|
+
"""
|
347
|
+
The private IP address.
|
348
|
+
"""
|
349
|
+
return pulumi.get(self, "address")
|
350
|
+
|
351
|
+
@address.setter
|
352
|
+
def address(self, value: Optional[pulumi.Input[str]]):
|
353
|
+
pulumi.set(self, "address", value)
|
354
|
+
|
355
|
+
@property
|
356
|
+
@pulumi.getter
|
357
|
+
def id(self) -> Optional[pulumi.Input[str]]:
|
358
|
+
"""
|
359
|
+
The ID of the IP address resource.
|
360
|
+
"""
|
361
|
+
return pulumi.get(self, "id")
|
362
|
+
|
363
|
+
@id.setter
|
364
|
+
def id(self, value: Optional[pulumi.Input[str]]):
|
365
|
+
pulumi.set(self, "id", value)
|
366
|
+
|
367
|
+
|
312
368
|
if not MYPY:
|
313
369
|
class SecurityGroupInboundRuleArgsDict(TypedDict):
|
314
370
|
action: pulumi.Input[str]
|
@@ -849,6 +905,58 @@ class SecurityGroupRulesOutboundRuleArgs:
|
|
849
905
|
pulumi.set(self, "protocol", value)
|
850
906
|
|
851
907
|
|
908
|
+
if not MYPY:
|
909
|
+
class ServerPrivateIpArgsDict(TypedDict):
|
910
|
+
address: NotRequired[pulumi.Input[str]]
|
911
|
+
"""
|
912
|
+
The private IP address.
|
913
|
+
"""
|
914
|
+
id: NotRequired[pulumi.Input[str]]
|
915
|
+
"""
|
916
|
+
The ID of the IP address resource.
|
917
|
+
"""
|
918
|
+
elif False:
|
919
|
+
ServerPrivateIpArgsDict: TypeAlias = Mapping[str, Any]
|
920
|
+
|
921
|
+
@pulumi.input_type
|
922
|
+
class ServerPrivateIpArgs:
|
923
|
+
def __init__(__self__, *,
|
924
|
+
address: Optional[pulumi.Input[str]] = None,
|
925
|
+
id: Optional[pulumi.Input[str]] = None):
|
926
|
+
"""
|
927
|
+
:param pulumi.Input[str] address: The private IP address.
|
928
|
+
:param pulumi.Input[str] id: The ID of the IP address resource.
|
929
|
+
"""
|
930
|
+
if address is not None:
|
931
|
+
pulumi.set(__self__, "address", address)
|
932
|
+
if id is not None:
|
933
|
+
pulumi.set(__self__, "id", id)
|
934
|
+
|
935
|
+
@property
|
936
|
+
@pulumi.getter
|
937
|
+
def address(self) -> Optional[pulumi.Input[str]]:
|
938
|
+
"""
|
939
|
+
The private IP address.
|
940
|
+
"""
|
941
|
+
return pulumi.get(self, "address")
|
942
|
+
|
943
|
+
@address.setter
|
944
|
+
def address(self, value: Optional[pulumi.Input[str]]):
|
945
|
+
pulumi.set(self, "address", value)
|
946
|
+
|
947
|
+
@property
|
948
|
+
@pulumi.getter
|
949
|
+
def id(self) -> Optional[pulumi.Input[str]]:
|
950
|
+
"""
|
951
|
+
The ID of the IP address resource.
|
952
|
+
"""
|
953
|
+
return pulumi.get(self, "id")
|
954
|
+
|
955
|
+
@id.setter
|
956
|
+
def id(self, value: Optional[pulumi.Input[str]]):
|
957
|
+
pulumi.set(self, "id", value)
|
958
|
+
|
959
|
+
|
852
960
|
if not MYPY:
|
853
961
|
class ServerPrivateNetworkArgsDict(TypedDict):
|
854
962
|
pn_id: pulumi.Input[str]
|