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 5.8 kB

2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  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. )
  36. var _ = serder.UseTypeUnionInternallyTagged(&JobInfoTypeUnion, "type")
  37. type JobInfoBase struct {
  38. LocalJobID string `json:"localJobID"`
  39. }
  40. func (i *JobInfoBase) GetLocalJobID() string {
  41. return i.LocalJobID
  42. }
  43. type NormalJobInfo struct {
  44. serder.Metadata `union:"Normal"`
  45. JobInfoBase
  46. Type string `json:"type"`
  47. Files JobFilesInfo `json:"files"`
  48. Runtime JobRuntimeInfo `json:"runtime"`
  49. Resources JobResourcesInfo `json:"resources"`
  50. Services JobServicesInfo `json:"services"`
  51. }
  52. type DataReturnJobInfo struct {
  53. serder.Metadata `union:"DataReturn"`
  54. JobInfoBase
  55. Type string `json:"type"`
  56. BucketID cdssdk.BucketID `json:"bucketID"`
  57. TargetLocalJobID string `json:"targetLocalJobID"`
  58. }
  59. type MultiInstanceJobInfo struct {
  60. serder.Metadata `union:"MultiInstance"`
  61. JobInfoBase
  62. Type string `json:"type"`
  63. Files JobFilesInfo `json:"files"`
  64. Runtime JobRuntimeInfo `json:"runtime"`
  65. Resources JobResourcesInfo `json:"resources"`
  66. ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
  67. }
  68. type ModelJobInfo struct {
  69. Type string `json:"type"`
  70. ModelID string `json:"modelID"`
  71. }
  72. type InstanceJobInfo struct {
  73. serder.Metadata `union:"Instance"`
  74. JobInfoBase
  75. Type string `json:"type"`
  76. LocalJobID string `json:"multiInstJobID"`
  77. Files JobFilesInfo `json:"files"`
  78. Runtime JobRuntimeInfo `json:"runtime"`
  79. Resources JobResourcesInfo `json:"resources"`
  80. ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
  81. }
  82. type JobFilesInfo struct {
  83. Dataset JobFileInfo `json:"dataset"`
  84. Code JobFileInfo `json:"code"`
  85. Image JobFileInfo `json:"image"`
  86. }
  87. type JobFileInfo interface {
  88. Noop()
  89. }
  90. var FileInfoTypeUnion = types.NewTypeUnion[JobFileInfo](
  91. (*PackageJobFileInfo)(nil),
  92. (*LocalJobFileInfo)(nil),
  93. (*DataReturnJobFileInfo)(nil),
  94. (*ImageJobFileInfo)(nil),
  95. )
  96. var _ = serder.UseTypeUnionInternallyTagged(&FileInfoTypeUnion, "type")
  97. type JobFileInfoBase struct{}
  98. func (i *JobFileInfoBase) Noop() {}
  99. type PackageJobFileInfo struct {
  100. serder.Metadata `union:"Package"`
  101. JobFileInfoBase
  102. Type string `json:"type"`
  103. PackageID cdssdk.PackageID `json:"packageID"`
  104. }
  105. type LocalJobFileInfo struct {
  106. serder.Metadata `union:"LocalFile"`
  107. JobFileInfoBase
  108. Type string `json:"type"`
  109. LocalPath string `json:"localPath"`
  110. }
  111. type DataReturnJobFileInfo struct {
  112. serder.Metadata `union:"DataReturn"`
  113. JobFileInfoBase
  114. Type string `json:"type"`
  115. DataReturnLocalJobID string `json:"dataReturnLocalJobID"`
  116. }
  117. type ImageJobFileInfo struct {
  118. serder.Metadata `union:"Image"`
  119. JobFileInfoBase
  120. Type string `json:"type"`
  121. ImageID ImageID `json:"imageID"`
  122. }
  123. type JobRuntimeInfo struct {
  124. Command string `json:"command"`
  125. Envs []KVPair `json:"envs"`
  126. }
  127. type KVPair struct {
  128. Key string `json:"key"`
  129. Value string `json:"value"`
  130. }
  131. // CPU、GPU、NPU、MLU单位为:核
  132. // Storage、Memory单位为:字节
  133. type JobResourcesInfo struct {
  134. CPU float64 `json:"cpu"`
  135. GPU float64 `json:"gpu"`
  136. NPU float64 `json:"npu"`
  137. MLU float64 `json:"mlu"`
  138. Storage int64 `json:"storage"`
  139. Memory int64 `json:"memory"`
  140. }
  141. type JobSetFilesUploadScheme struct {
  142. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  143. }
  144. type JobFilesUploadScheme struct {
  145. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  146. }
  147. type LocalFileUploadScheme struct {
  148. LocalPath string `json:"localPath"`
  149. UploadToCDSNodeID *cdssdk.NodeID `json:"uploadToCDSNodeID"`
  150. }
  151. type JobServicesInfo struct {
  152. ServicePortInfos []ServicePortInfo `json:"servicePortInfos"`
  153. }
  154. type ServicePortInfo struct {
  155. Name string `json:"name"`
  156. Port int64 `json:"port"`
  157. }
  158. type JobSetServiceInfo struct {
  159. Name string `json:"name"`
  160. Port int64 `json:"port"`
  161. CDSNodeID *cdssdk.NodeID `json:"cdsNodeID"`
  162. LocalJobID string `json:"localJobID"`
  163. }
  164. type Bootstrap interface {
  165. GetBootstrapType() string
  166. }
  167. type DirectBootstrap struct {
  168. serder.Metadata `union:"Direct"`
  169. Type string `json:"type"`
  170. }
  171. type NoEnvBootstrap struct {
  172. serder.Metadata `union:"NoEnv"`
  173. Type string `json:"type"`
  174. ScriptPackageID cdssdk.PackageID `json:"scriptPackageID"`
  175. ScriptFileName string `json:"scriptFileName"`
  176. }
  177. var BootstrapTypeUnion = types.NewTypeUnion[Bootstrap](
  178. (*DirectBootstrap)(nil),
  179. (*NoEnvBootstrap)(nil),
  180. )
  181. var _ = serder.UseTypeUnionInternallyTagged(&BootstrapTypeUnion, "type")
  182. func (b *DirectBootstrap) GetBootstrapType() string {
  183. return b.Type
  184. }
  185. func (b *NoEnvBootstrap) GetBootstrapType() string {
  186. return b.Type
  187. }
  188. const (
  189. JobDataInEnv = "SCH_DATA_IN"
  190. JobDataOutEnv = "SCH_DATA_OUT"
  191. )
  192. type Rclone struct {
  193. CDSRcloneID string `json:"cds_rcloneID"`
  194. CDSRcloneConfigID string `json:"cds_rcloneConfigID"`
  195. }