Skip to content

Commit 6f9433a

Browse files
committed
run docker model configure
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent 1761bb9 commit 6f9433a

File tree

4 files changed

+33
-15
lines changed

4 files changed

+33
-15
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,6 @@ jobs:
187187
run: |
188188
sudo apt-get install docker-model-plugin
189189
docker model version
190-
docker info
191190
192191
- name: Set up Go
193192
uses: actions/setup-go@v5

go.mod

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require (
88
github.com/Microsoft/go-winio v0.6.2
99
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d
1010
github.com/buger/goterm v1.0.4
11-
github.com/compose-spec/compose-go/v2 v2.6.5
11+
github.com/compose-spec/compose-go/v2 v2.6.7
1212
github.com/containerd/containerd/v2 v2.1.3
1313
github.com/containerd/errdefs v1.0.0
1414
github.com/containerd/platforms v1.0.0-rc.1
@@ -212,5 +212,3 @@ exclude (
212212
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
213213
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
214214
)
215-
216-
replace github.com/compose-spec/compose-go/v2 => github.com/ndeloof/compose-go/v2 v2.0.1-0.20250625082240-b948fe935f02

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m
359359
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
360360
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
361361
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
362-
github.com/ndeloof/compose-go/v2 v2.0.1-0.20250625082240-b948fe935f02 h1:RPYzx1y7ldfYB8Ba2INxr6FiW2ZxXHLl8it775gz0qE=
363-
github.com/ndeloof/compose-go/v2 v2.0.1-0.20250625082240-b948fe935f02/go.mod h1:TmjkIB9W73fwVxkYY+u2uhMbMUakjiif79DlYgXsyvU=
362+
github.com/ndeloof/compose-go/v2 v2.0.1-0.20250627062006-6fc6cf288c52 h1:rvpcUfet2Po1zolJff4kzPoGDREh7ymXXhKXKBPEiwg=
363+
github.com/ndeloof/compose-go/v2 v2.0.1-0.20250627062006-6fc6cf288c52/go.mod h1:TmjkIB9W73fwVxkYY+u2uhMbMUakjiif79DlYgXsyvU=
364364
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
365365
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
366366
github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU=

pkg/compose/model.go

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"os"
2525
"os/exec"
2626
"slices"
27+
"strconv"
2728
"strings"
2829

2930
"github.com/compose-spec/compose-go/v2/types"
@@ -67,24 +68,28 @@ func (s *composeService) ensureModels(ctx context.Context, project *types.Projec
6768
if err != nil {
6869
return fmt.Errorf("error unmarshalling available models: %w", err)
6970
}
71+
var availableModels []string
72+
for _, model := range models {
73+
availableModels = append(availableModels, model.Tags...)
74+
}
7075

7176
eg, gctx := errgroup.WithContext(ctx)
7277
eg.Go(func() error {
7378
return s.setModelEndpointVariable(gctx, dockerModel, project)
7479
})
7580

76-
MODELS:
7781
for name, config := range project.Models {
78-
for _, model := range models {
79-
if slices.Contains(model.Tags, config.Model) {
80-
continue MODELS
81-
}
82-
}
8382
if config.Name == "" {
8483
config.Name = name
8584
}
8685
eg.Go(func() error {
87-
return s.pullModel(gctx, dockerModel, config, quietPull)
86+
if !slices.Contains(availableModels, config.Model) {
87+
err = s.pullModel(gctx, dockerModel, config, quietPull)
88+
if err != nil {
89+
return err
90+
}
91+
}
92+
return s.configureModel(gctx, dockerModel, config)
8893
})
8994
}
9095
return eg.Wait()
@@ -140,6 +145,22 @@ func (s *composeService) pullModel(ctx context.Context, dockerModel *manager.Plu
140145
return err
141146
}
142147

148+
func (s *composeService) configureModel(ctx context.Context, dockerModel *manager.Plugin, config types.ModelConfig) error {
149+
// configure [--context-size=<n>] MODEL [-- <runtime-flags...>]
150+
args := []string{"configure"}
151+
if config.ContextSize > 0 {
152+
args = append(args, "--context-size", strconv.Itoa(config.ContextSize))
153+
}
154+
args = append(args, config.Model)
155+
if len(config.RuntimeFlags) != 0 {
156+
args = append(args, "--")
157+
args = append(args, config.RuntimeFlags...)
158+
}
159+
cmd := exec.CommandContext(ctx, dockerModel.Path, args...)
160+
s.setupChildProcess(ctx, cmd)
161+
return cmd.Run()
162+
}
163+
143164
func (s *composeService) setModelEndpointVariable(ctx context.Context, dockerModel *manager.Plugin, project *types.Project) error {
144165
cmd := exec.CommandContext(ctx, dockerModel.Path, "status", "--json")
145166
s.setupChildProcess(ctx, cmd)
@@ -160,8 +181,8 @@ func (s *composeService) setModelEndpointVariable(ctx context.Context, dockerMod
160181
for _, service := range project.Services {
161182
for model, modelConfig := range service.Models {
162183
var variable string
163-
if modelConfig != nil && modelConfig.Variable != "" {
164-
variable = modelConfig.Variable
184+
if modelConfig != nil && modelConfig.EndpointVariable != "" {
185+
variable = modelConfig.EndpointVariable
165186
} else {
166187
variable = strings.ToUpper(model) + "_URL"
167188
}

0 commit comments

Comments
 (0)