You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

models.go 6.2 kB

2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package schsdk
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/types"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. "gitlink.org.cn/cloudream/common/utils/serder"
  6. )
  7. const (
  8. JobTypeNormal = "Normal"
  9. JobTypeResource = "Resource"
  10. JobTypeInstance = "Instance"
  11. FileInfoTypePackage = "Package"
  12. FileInfoTypeLocalFile = "LocalFile"
  13. FileInfoTypeResource = "Resource"
  14. FileInfoTypeImage = "Image"
  15. )
  16. type JobID string
  17. type JobSetID string
  18. type ImageID int64
  19. // 计算中心ID
  20. type CCID int64
  21. type ModelID string
  22. type NodeID int64
  23. type Address string
  24. type JobSetInfo struct {
  25. Jobs []JobInfo `json:"jobs"`
  26. }
  27. type JobInfo interface {
  28. GetLocalJobID() string
  29. }
  30. var JobInfoTypeUnion = types.NewTypeUnion[JobInfo](
  31. (*NormalJobInfo)(nil),
  32. (*DataReturnJobInfo)(nil),
  33. (*MultiInstanceJobInfo)(nil),
  34. (*InstanceJobInfo)(nil),
  35. (*UpdateMultiInstanceJobInfo)(nil),
  36. )
  37. var _ = serder.UseTypeUnionInternallyTagged(&JobInfoTypeUnion, "type")
  38. type JobInfoBase struct {
  39. LocalJobID string `json:"localJobID"`
  40. }
  41. func (i *JobInfoBase) GetLocalJobID() string {
  42. return i.LocalJobID
  43. }
  44. type NormalJobInfo struct {
  45. serder.Metadata `union:"Normal"`
  46. JobInfoBase
  47. Type string `json:"type"`
  48. Files JobFilesInfo `json:"files"`
  49. Runtime JobRuntimeInfo `json:"runtime"`
  50. Resources JobResourcesInfo `json:"resources"`
  51. Services JobServicesInfo `json:"services"`
  52. }
  53. type DataReturnJobInfo struct {
  54. serder.Metadata `union:"DataReturn"`
  55. JobInfoBase
  56. Type string `json:"type"`
  57. BucketID cdssdk.BucketID `json:"bucketID"`
  58. TargetLocalJobID string `json:"targetLocalJobID"`
  59. }
  60. type MultiInstanceJobInfo struct {
  61. serder.Metadata `union:"MultiInstance"`
  62. JobInfoBase
  63. Type string `json:"type"`
  64. Files JobFilesInfo `json:"files"`
  65. Runtime JobRuntimeInfo `json:"runtime"`
  66. Resources JobResourcesInfo `json:"resources"`
  67. ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
  68. }
  69. type UpdateMultiInstanceJobInfo struct {
  70. serder.Metadata `union:"UpdateModel"`
  71. JobInfoBase
  72. Type string `json:"type"`
  73. Files JobFilesInfo `json:"files"`
  74. Runtime JobRuntimeInfo `json:"runtime"`
  75. MultiInstanceJobSetID JobSetID `json:"multiInstanceJobSetID"`
  76. //InstanceIDs []JobID `json:"instanceIDs"`
  77. UpdateStrategy string `json:"updateStrategy"`
  78. }
  79. type ModelJobInfo struct {
  80. Type string `json:"type"`
  81. ModelID string `json:"modelID"`
  82. }
  83. type InstanceJobInfo struct {
  84. serder.Metadata `union:"Instance"`
  85. JobInfoBase
  86. Type string `json:"type"`
  87. LocalJobID string `json:"multiInstJobID"`
  88. Files JobFilesInfo `json:"files"`
  89. Runtime JobRuntimeInfo `json:"runtime"`
  90. Resources JobResourcesInfo `json:"resources"`
  91. ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
  92. }
  93. type JobFilesInfo struct {
  94. Dataset JobFileInfo `json:"dataset"`
  95. Code JobFileInfo `json:"code"`
  96. Image JobFileInfo `json:"image"`
  97. }
  98. type JobFileInfo interface {
  99. Noop()
  100. }
  101. var FileInfoTypeUnion = types.NewTypeUnion[JobFileInfo](
  102. (*PackageJobFileInfo)(nil),
  103. (*LocalJobFileInfo)(nil),
  104. (*DataReturnJobFileInfo)(nil),
  105. (*ImageJobFileInfo)(nil),
  106. )
  107. var _ = serder.UseTypeUnionInternallyTagged(&FileInfoTypeUnion, "type")
  108. type JobFileInfoBase struct{}
  109. func (i *JobFileInfoBase) Noop() {}
  110. type PackageJobFileInfo struct {
  111. serder.Metadata `union:"Package"`
  112. JobFileInfoBase
  113. Type string `json:"type"`
  114. PackageID cdssdk.PackageID `json:"packageID"`
  115. }
  116. type LocalJobFileInfo struct {
  117. serder.Metadata `union:"LocalFile"`
  118. JobFileInfoBase
  119. Type string `json:"type"`
  120. LocalPath string `json:"localPath"`
  121. }
  122. type DataReturnJobFileInfo struct {
  123. serder.Metadata `union:"DataReturn"`
  124. JobFileInfoBase
  125. Type string `json:"type"`
  126. DataReturnLocalJobID string `json:"dataReturnLocalJobID"`
  127. }
  128. type ImageJobFileInfo struct {
  129. serder.Metadata `union:"Image"`
  130. JobFileInfoBase
  131. Type string `json:"type"`
  132. ImageID ImageID `json:"imageID"`
  133. }
  134. type JobRuntimeInfo struct {
  135. Command string `json:"command"`
  136. Envs []KVPair `json:"envs"`
  137. }
  138. type KVPair struct {
  139. Key string `json:"key"`
  140. Value string `json:"value"`
  141. }
  142. // CPU、GPU、NPU、MLU单位为:核
  143. // Storage、Memory单位为:字节
  144. type JobResourcesInfo struct {
  145. CPU float64 `json:"cpu"`
  146. GPU float64 `json:"gpu"`
  147. NPU float64 `json:"npu"`
  148. MLU float64 `json:"mlu"`
  149. Storage int64 `json:"storage"`
  150. Memory int64 `json:"memory"`
  151. }
  152. type JobSetFilesUploadScheme struct {
  153. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  154. }
  155. type JobFilesUploadScheme struct {
  156. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  157. }
  158. type LocalFileUploadScheme struct {
  159. LocalPath string `json:"localPath"`
  160. UploadToCDSNodeID *cdssdk.NodeID `json:"uploadToCDSNodeID"`
  161. }
  162. type JobServicesInfo struct {
  163. ServicePortInfos []ServicePortInfo `json:"servicePortInfos"`
  164. }
  165. type ServicePortInfo struct {
  166. Name string `json:"name"`
  167. Port int64 `json:"port"`
  168. }
  169. type JobSetServiceInfo struct {
  170. Name string `json:"name"`
  171. Port int64 `json:"port"`
  172. CDSNodeID *cdssdk.NodeID `json:"cdsNodeID"`
  173. LocalJobID string `json:"localJobID"`
  174. }
  175. type Bootstrap interface {
  176. GetBootstrapType() string
  177. }
  178. type DirectBootstrap struct {
  179. serder.Metadata `union:"Direct"`
  180. Type string `json:"type"`
  181. }
  182. type NoEnvBootstrap struct {
  183. serder.Metadata `union:"NoEnv"`
  184. Type string `json:"type"`
  185. ScriptPackageID cdssdk.PackageID `json:"scriptPackageID"`
  186. ScriptFileName string `json:"scriptFileName"`
  187. }
  188. var BootstrapTypeUnion = types.NewTypeUnion[Bootstrap](
  189. (*DirectBootstrap)(nil),
  190. (*NoEnvBootstrap)(nil),
  191. )
  192. var _ = serder.UseTypeUnionInternallyTagged(&BootstrapTypeUnion, "type")
  193. func (b *DirectBootstrap) GetBootstrapType() string {
  194. return b.Type
  195. }
  196. func (b *NoEnvBootstrap) GetBootstrapType() string {
  197. return b.Type
  198. }
  199. const (
  200. JobDataInEnv = "SCH_DATA_IN"
  201. JobDataOutEnv = "SCH_DATA_OUT"
  202. )
  203. type Rclone struct {
  204. CDSRcloneID string `json:"cds_rcloneID"`
  205. CDSRcloneConfigID string `json:"cds_rcloneConfigID"`
  206. }