| 117 | } |
| 118 | |
| 119 | func handleLLMParams(llm *model.TensorRTLLM, create request.TensorRTLLMCreate) error { |
| 120 | var composeContent []byte |
| 121 | if llm.ID == 0 { |
| 122 | composeContent = ai.DefaultTensorrtLLMCompose |
| 123 | } else { |
| 124 | composeContent = []byte(llm.DockerCompose) |
| 125 | } |
| 126 | composeMap := make(map[string]interface{}) |
| 127 | if err := yaml.Unmarshal(composeContent, &composeMap); err != nil { |
| 128 | return err |
| 129 | } |
| 130 | services, serviceValid := composeMap["services"].(map[string]interface{}) |
| 131 | if !serviceValid { |
| 132 | return buserr.New("ErrFileParse") |
| 133 | } |
| 134 | serviceName := "" |
| 135 | serviceValue := make(map[string]interface{}) |
| 136 | |
| 137 | if llm.ID > 0 { |
| 138 | serviceName = llm.Name |
| 139 | serviceValue = services[serviceName].(map[string]interface{}) |
| 140 | } else { |
| 141 | for name, service := range services { |
| 142 | serviceName = name |
| 143 | serviceValue = service.(map[string]interface{}) |
| 144 | break |
| 145 | } |
| 146 | delete(services, serviceName) |
| 147 | } |
| 148 | |
| 149 | delete(serviceValue, "ports") |
| 150 | if len(create.ExposedPorts) > 0 { |
| 151 | var ports []interface{} |
| 152 | for i := range create.ExposedPorts { |
| 153 | containerPortStr := fmt.Sprintf("CONTAINER_PORT_%d", i) |
| 154 | hostPortStr := fmt.Sprintf("HOST_PORT_%d", i) |
| 155 | hostIPStr := fmt.Sprintf("HOST_IP_%d", i) |
| 156 | ports = append(ports, fmt.Sprintf("${%s}:${%s}:${%s}", hostIPStr, hostPortStr, containerPortStr)) |
| 157 | } |
| 158 | serviceValue["ports"] = ports |
| 159 | } |
| 160 | |
| 161 | delete(serviceValue, "environment") |
| 162 | var environments []interface{} |
| 163 | environments = append(environments, fmt.Sprintf("MODEL_PATH=%s", create.ModelDir)) |
| 164 | for _, e := range create.Environments { |
| 165 | environments = append(environments, fmt.Sprintf("%s=%s", e.Key, e.Value)) |
| 166 | } |
| 167 | serviceValue["environment"] = environments |
| 168 | |
| 169 | var volumes []interface{} |
| 170 | var defaultVolumes = map[string]string{ |
| 171 | "${MODEL_PATH}": "${MODEL_PATH}", |
| 172 | } |
| 173 | for k, v := range defaultVolumes { |
| 174 | volumes = append(volumes, fmt.Sprintf("%s:%s", k, v)) |
| 175 | } |
| 176 | for _, volume := range create.Volumes { |