Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
dynamo
Commits
1ae7641d
"lib/llm/vscode:/vscode.git/clone" did not exist on "2dbfed896a5ab929caabbc3355a0c7b70d0723fb"
Unverified
Commit
1ae7641d
authored
May 29, 2025
by
Biswa Panda
Committed by
GitHub
May 30, 2025
Browse files
feat: populate default image name (#1255)
parent
003c4270
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
32 additions
and
13 deletions
+32
-13
deploy/cloud/operator/internal/controller/dynamocomponentdeployment_controller.go
...ternal/controller/dynamocomponentdeployment_controller.go
+4
-1
deploy/cloud/operator/internal/controller/dynamocomponentdeployment_controller_test.go
...l/controller/dynamocomponentdeployment_controller_test.go
+1
-1
deploy/sdk/src/dynamo/sdk/cli/build.py
deploy/sdk/src/dynamo/sdk/cli/build.py
+7
-3
deploy/sdk/src/dynamo/sdk/core/lib.py
deploy/sdk/src/dynamo/sdk/core/lib.py
+0
-1
deploy/sdk/src/dynamo/sdk/core/protocol/interface.py
deploy/sdk/src/dynamo/sdk/core/protocol/interface.py
+12
-6
deploy/sdk/src/dynamo/sdk/tests/test_resources.py
deploy/sdk/src/dynamo/sdk/tests/test_resources.py
+6
-1
examples/llm/configs/agg_router.yaml
examples/llm/configs/agg_router.yaml
+2
-0
No files found.
deploy/cloud/operator/internal/controller/dynamocomponentdeployment_controller.go
View file @
1ae7641d
...
@@ -82,6 +82,7 @@ const (
...
@@ -82,6 +82,7 @@ const (
KubeAnnotationLWSSize
=
"nvidia.com/lws-size"
KubeAnnotationLWSSize
=
"nvidia.com/lws-size"
DeploymentTypeStandard
=
"standard"
DeploymentTypeStandard
=
"standard"
DeploymentTypeLeaderWorker
=
"leader-worker"
DeploymentTypeLeaderWorker
=
"leader-worker"
ComponentTypePlanner
=
"Planner"
)
)
// DynamoComponentDeploymentReconciler reconciles a DynamoComponentDeployment object
// DynamoComponentDeploymentReconciler reconciles a DynamoComponentDeployment object
...
@@ -1454,8 +1455,10 @@ func (r *DynamoComponentDeploymentReconciler) generatePodTemplateSpec(ctx contex
...
@@ -1454,8 +1455,10 @@ func (r *DynamoComponentDeploymentReconciler) generatePodTemplateSpec(ctx contex
if
opt
.
dynamoComponentDeployment
.
Spec
.
DynamoNamespace
!=
nil
&&
*
opt
.
dynamoComponentDeployment
.
Spec
.
DynamoNamespace
!=
""
{
if
opt
.
dynamoComponentDeployment
.
Spec
.
DynamoNamespace
!=
nil
&&
*
opt
.
dynamoComponentDeployment
.
Spec
.
DynamoNamespace
!=
""
{
args
=
append
(
args
,
fmt
.
Sprintf
(
"--%s.ServiceArgs.dynamo.namespace=%s"
,
opt
.
dynamoComponentDeployment
.
Spec
.
ServiceName
,
*
opt
.
dynamoComponentDeployment
.
Spec
.
DynamoNamespace
))
args
=
append
(
args
,
fmt
.
Sprintf
(
"--%s.ServiceArgs.dynamo.namespace=%s"
,
opt
.
dynamoComponentDeployment
.
Spec
.
ServiceName
,
*
opt
.
dynamoComponentDeployment
.
Spec
.
DynamoNamespace
))
}
}
if
componentType
,
exists
:=
opt
.
dynamoComponentDeployment
.
Labels
[
commonconsts
.
KubeLabelDynamoComponent
];
exists
&&
componentType
==
ComponentTypePlanner
{
args
=
append
(
args
,
fmt
.
Sprintf
(
"--%s.environment=%s"
,
opt
.
dynamoComponentDeployment
.
Spec
.
ServiceName
,
KubernetesDeploymentStrategy
))
args
=
append
(
args
,
fmt
.
Sprintf
(
"--%s.environment=%s"
,
opt
.
dynamoComponentDeployment
.
Spec
.
ServiceName
,
KubernetesDeploymentStrategy
))
}
}
}
if
len
(
opt
.
dynamoComponentDeployment
.
Spec
.
Envs
)
>
0
{
if
len
(
opt
.
dynamoComponentDeployment
.
Spec
.
Envs
)
>
0
{
for
_
,
env
:=
range
opt
.
dynamoComponentDeployment
.
Spec
.
Envs
{
for
_
,
env
:=
range
opt
.
dynamoComponentDeployment
.
Spec
.
Envs
{
...
...
deploy/cloud/operator/internal/controller/dynamocomponentdeployment_controller_test.go
View file @
1ae7641d
...
@@ -934,7 +934,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
...
@@ -934,7 +934,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
Name
:
"main"
,
Name
:
"main"
,
Image
:
"test-image:latest"
,
Image
:
"test-image:latest"
,
Command
:
[]
string
{
"sh"
,
"-c"
},
Command
:
[]
string
{
"sh"
,
"-c"
},
Args
:
[]
string
{
"ray start --head --port=6379 && cd src && uv run dynamo serve --system-app-port 5000 --enable-system-app --use-default-health-checks --service-name test-lws-deploy-service test-tag --test-lws-deploy-service.ServiceArgs.dynamo.namespace=default
--test-lws-deploy-service.environment=kubernetes
"
},
Args
:
[]
string
{
"ray start --head --port=6379 && cd src && uv run dynamo serve --system-app-port 5000 --enable-system-app --use-default-health-checks --service-name test-lws-deploy-service test-tag --test-lws-deploy-service.ServiceArgs.dynamo.namespace=default"
},
Env
:
[]
corev1
.
EnvVar
{{
Name
:
"DYNAMO_PORT"
,
Value
:
"3000"
}},
Env
:
[]
corev1
.
EnvVar
{{
Name
:
"DYNAMO_PORT"
,
Value
:
"3000"
}},
VolumeMounts
:
[]
corev1
.
VolumeMount
{
VolumeMounts
:
[]
corev1
.
VolumeMount
{
{
{
...
...
deploy/sdk/src/dynamo/sdk/cli/build.py
View file @
1ae7641d
...
@@ -129,13 +129,18 @@ class ServiceInfo(BaseModel):
...
@@ -129,13 +129,18 @@ class ServiceInfo(BaseModel):
if
DynamoTransport
.
HTTP
in
endpoint
.
transports
:
if
DynamoTransport
.
HTTP
in
endpoint
.
transports
:
api_endpoints
.
append
(
f
"/
{
ep_name
}
"
)
api_endpoints
.
append
(
f
"/
{
ep_name
}
"
)
image
=
service
.
config
.
image
or
DYNAMO_IMAGE
assert
(
image
is
not
None
),
"Please set DYNAMO_IMAGE environment variable or image field in service config"
# Create config
# Create config
config
=
ServiceConfig
(
config
=
ServiceConfig
(
name
=
name
,
name
=
name
,
service
=
""
,
service
=
""
,
resource
=
service
.
config
.
resource
.
model_dump
(),
resource
=
service
.
config
.
resource
s
.
model_dump
(),
workers
=
service
.
config
.
workers
,
workers
=
service
.
config
.
workers
,
image
=
service
.
config
.
image
,
image
=
image
,
dynamo
=
service
.
config
.
dynamo
.
model_dump
(),
dynamo
=
service
.
config
.
dynamo
.
model_dump
(),
http_exposed
=
len
(
api_endpoints
)
>
0
,
http_exposed
=
len
(
api_endpoints
)
>
0
,
api_endpoints
=
api_endpoints
,
api_endpoints
=
api_endpoints
,
...
@@ -423,7 +428,6 @@ class Package:
...
@@ -423,7 +428,6 @@ class Package:
s1
=
re
.
sub
(
"(.)([A-Z][a-z]+)"
,
r
"\1_\2"
,
name
)
s1
=
re
.
sub
(
"(.)([A-Z][a-z]+)"
,
r
"\1_\2"
,
name
)
s2
=
re
.
sub
(
"([a-z0-9])([A-Z])"
,
r
"\1_\2"
,
s1
)
s2
=
re
.
sub
(
"([a-z0-9])([A-Z])"
,
r
"\1_\2"
,
s1
)
ret
=
s2
.
replace
(
":"
,
"_"
)
ret
=
s2
.
replace
(
":"
,
"_"
)
print
(
f
"Converting
{
name
}
to snake_case:
{
ret
}
"
)
return
ret
return
ret
@
staticmethod
@
staticmethod
...
...
deploy/sdk/src/dynamo/sdk/core/lib.py
View file @
1ae7641d
...
@@ -60,7 +60,6 @@ def service(
...
@@ -60,7 +60,6 @@ def service(
)
->
Any
:
)
->
Any
:
"""Service decorator that's adapter-agnostic"""
"""Service decorator that's adapter-agnostic"""
config
=
ServiceConfig
(
**
kwargs
)
config
=
ServiceConfig
(
**
kwargs
)
logger
.
info
(
f
"inner:
{
inner
}
config:
{
config
}
"
)
def
decorator
(
inner
:
Type
[
G
])
->
ServiceInterface
[
G
]:
def
decorator
(
inner
:
Type
[
G
])
->
ServiceInterface
[
G
]:
provider
=
get_target
()
provider
=
get_target
()
...
...
deploy/sdk/src/dynamo/sdk/core/protocol/interface.py
View file @
1ae7641d
...
@@ -17,10 +17,10 @@
...
@@ -17,10 +17,10 @@
from
abc
import
ABC
,
abstractmethod
from
abc
import
ABC
,
abstractmethod
from
collections
import
defaultdict
from
collections
import
defaultdict
from
enum
import
Enum
,
auto
from
enum
import
Enum
,
auto
from
typing
import
Any
,
Dict
,
Generic
,
List
,
Optional
,
Set
,
Tuple
,
Type
,
TypeVar
from
typing
import
Any
,
Dict
,
Generic
,
List
,
Optional
,
Set
,
Tuple
,
Type
,
TypeVar
,
Union
from
fastapi
import
FastAPI
from
fastapi
import
FastAPI
from
pydantic
import
BaseModel
from
pydantic
import
BaseModel
,
Field
,
field_validator
from
dynamo.sdk.core.protocol.deployment
import
Env
from
dynamo.sdk.core.protocol.deployment
import
Env
...
@@ -59,16 +59,22 @@ class DynamoTransport(Enum):
...
@@ -59,16 +59,22 @@ class DynamoTransport(Enum):
class
ResourceConfig
(
BaseModel
):
class
ResourceConfig
(
BaseModel
):
"""Configuration for Dynamo resources"""
"""Configuration for Dynamo resources"""
cpu
:
int
=
1
cpu
:
str
=
Field
(
default
=
"1"
)
memory
:
str
=
"100Mi"
memory
:
str
=
Field
(
default
=
"500Mi"
)
gpu
:
str
=
"0"
gpu
:
str
=
Field
(
default
=
"0"
)
@
field_validator
(
"gpu"
,
mode
=
"before"
)
@
classmethod
def
convert_gpu_to_string
(
cls
,
v
:
Union
[
str
,
int
])
->
str
:
"""Convert gpu value to string if it's an integer"""
return
str
(
v
)
class
ServiceConfig
(
BaseModel
):
class
ServiceConfig
(
BaseModel
):
"""Base service configuration that can be extended by adapters"""
"""Base service configuration that can be extended by adapters"""
dynamo
:
DynamoConfig
dynamo
:
DynamoConfig
resource
:
ResourceConfig
=
ResourceConfig
()
resource
s
:
ResourceConfig
=
ResourceConfig
()
workers
:
int
=
1
workers
:
int
=
1
image
:
str
|
None
=
None
image
:
str
|
None
=
None
envs
:
List
[
Env
]
|
None
=
None
envs
:
List
[
Env
]
|
None
=
None
...
...
deploy/sdk/src/dynamo/sdk/tests/test_resources.py
View file @
1ae7641d
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
import
pytest
import
pytest
from
dynamo.sdk.cli.utils
import
configure_target_environment
from
dynamo.sdk.cli.utils
import
configure_target_environment
from
dynamo.sdk.core.protocol.interface
import
ServiceInterface
from
dynamo.sdk.core.runner
import
TargetEnum
from
dynamo.sdk.core.runner
import
TargetEnum
pytestmark
=
pytest
.
mark
.
pre_merge
pytestmark
=
pytest
.
mark
.
pre_merge
...
@@ -40,4 +41,8 @@ def test_gpu_resources(setup_and_teardown):
...
@@ -40,4 +41,8 @@ def test_gpu_resources(setup_and_teardown):
def
__init__
(
self
)
->
None
:
def
__init__
(
self
)
->
None
:
pass
pass
assert
MyService
.
config
is
not
None
# type: ignore
dyn_svc
:
ServiceInterface
=
MyService
assert
dyn_svc
.
config
is
not
None
# type: ignore
assert
dyn_svc
.
config
.
resources
.
cpu
==
"2"
assert
dyn_svc
.
config
.
resources
.
gpu
==
"1"
assert
dyn_svc
.
config
.
resources
.
memory
==
"4Gi"
examples/llm/configs/agg_router.yaml
View file @
1ae7641d
...
@@ -40,6 +40,8 @@ VllmWorker:
...
@@ -40,6 +40,8 @@ VllmWorker:
workers
:
1
workers
:
1
resources
:
resources
:
gpu
:
'
1'
gpu
:
'
1'
cpu
:
'
10'
memory
:
'
20Gi'
common-configs
:
[
model
,
block-size
,
max-model-len
,
router
,
kv-transfer-config
]
common-configs
:
[
model
,
block-size
,
max-model-len
,
router
,
kv-transfer-config
]
Planner
:
Planner
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment