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.8 kB

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