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

1 year ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  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. JobTypeFinetuning = "Finetuning"
  12. JobTypeDataPreprocess = "DataPreprocess"
  13. FileInfoTypePackage = "Package"
  14. FileInfoTypeLocalFile = "LocalFile"
  15. FileInfoTypeResource = "Resource"
  16. FileInfoTypeImage = "Image"
  17. MemoryUtilization = "MemoryUtilization"
  18. GPUUtilization = "GPUUtilization"
  19. CPUUtilization = "CPUUtilization"
  20. )
  21. type JobID string
  22. type JobSetID string
  23. type ImageID int64
  24. // 计算中心ID
  25. type CCID int64
  26. type ModelID string
  27. type ModelName string
  28. type ECSInstanceID string
  29. type NodeID int64
  30. type Address string
  31. type JobSetInfo struct {
  32. Jobs []JobInfo `json:"jobs"`
  33. }
  34. type JobInfo interface {
  35. GetLocalJobID() string
  36. }
  37. var JobInfoTypeUnion = types.NewTypeUnion[JobInfo](
  38. (*NormalJobInfo)(nil),
  39. (*DataReturnJobInfo)(nil),
  40. (*MultiInstanceJobInfo)(nil),
  41. (*InstanceJobInfo)(nil),
  42. (*UpdateMultiInstanceJobInfo)(nil),
  43. (*FinetuningJobInfo)(nil),
  44. (*DataPreprocessJobInfo)(nil),
  45. )
  46. var _ = serder.UseTypeUnionInternallyTagged(&JobInfoTypeUnion, "type")
  47. type JobInfoBase struct {
  48. LocalJobID string `json:"localJobID"`
  49. }
  50. func (i *JobInfoBase) GetLocalJobID() string {
  51. return i.LocalJobID
  52. }
  53. type NormalJobInfo struct {
  54. serder.Metadata `union:"Normal"`
  55. JobInfoBase
  56. Type string `json:"type"`
  57. Files JobFilesInfo `json:"files"`
  58. Runtime JobRuntimeInfo `json:"runtime"`
  59. Resources JobResourcesInfo `json:"resources"`
  60. Services JobServicesInfo `json:"services"`
  61. ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
  62. }
  63. // FinetuningJobInfo 模型微调
  64. type FinetuningJobInfo struct {
  65. serder.Metadata `union:"Finetuning"`
  66. JobInfoBase
  67. Type string `json:"type"`
  68. Files JobFilesInfo `json:"files"`
  69. Runtime JobRuntimeInfo `json:"runtime"`
  70. Resources JobResourcesInfo `json:"resources"`
  71. Services JobServicesInfo `json:"services"`
  72. ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
  73. }
  74. // DataPreprocessJobInfo 数据预处理
  75. type DataPreprocessJobInfo struct {
  76. serder.Metadata `union:"DataPreprocess"`
  77. JobInfoBase
  78. Type string `json:"type"`
  79. Files JobFilesInfo `json:"files"`
  80. Runtime JobRuntimeInfo `json:"runtime"`
  81. Resources JobResourcesInfo `json:"resources"`
  82. Services JobServicesInfo `json:"services"`
  83. }
  84. type DataReturnJobInfo struct {
  85. serder.Metadata `union:"DataReturn"`
  86. JobInfoBase
  87. Type string `json:"type"`
  88. BucketID cdssdk.BucketID `json:"bucketID"`
  89. TargetLocalJobID string `json:"targetLocalJobID"`
  90. }
  91. // MultiInstanceJobInfo 多实例(推理任务)
  92. type MultiInstanceJobInfo struct {
  93. serder.Metadata `union:"MultiInstance"`
  94. JobInfoBase
  95. Type string `json:"type"`
  96. Files JobFilesInfo `json:"files"`
  97. Runtime JobRuntimeInfo `json:"runtime"`
  98. Resources JobResourcesInfo `json:"resources"`
  99. ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
  100. }
  101. // UpdateMultiInstanceJobInfo 更新模型
  102. type UpdateMultiInstanceJobInfo struct {
  103. serder.Metadata `union:"UpdateModel"`
  104. JobInfoBase
  105. Type string `json:"type"`
  106. Files JobFilesInfo `json:"files"`
  107. Runtime JobRuntimeInfo `json:"runtime"`
  108. MultiInstanceJobSetID JobSetID `json:"multiInstanceJobSetID"`
  109. UpdateType string `json:"updateType"`
  110. SubJobs []JobID `json:"subJobs"`
  111. Operate string `json:"operate"`
  112. }
  113. type ModelJobInfo struct {
  114. Type string `json:"type"`
  115. ModelID ModelID `json:"modelID"`
  116. CustomModelName ModelName `json:"customModelName"`
  117. Command string `json:"command"`
  118. }
  119. // InstanceJobInfo 单实例(推理任务)
  120. type InstanceJobInfo struct {
  121. serder.Metadata `union:"Instance"`
  122. JobInfoBase
  123. Type string `json:"type"`
  124. LocalJobID string `json:"multiInstJobID"`
  125. Files JobFilesInfo `json:"files"`
  126. Runtime JobRuntimeInfo `json:"runtime"`
  127. Resources JobResourcesInfo `json:"resources"`
  128. ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
  129. }
  130. type JobFilesInfo struct {
  131. Dataset JobFileInfo `json:"dataset"`
  132. Code JobFileInfo `json:"code"`
  133. Image JobFileInfo `json:"image"`
  134. }
  135. type JobFileInfo interface {
  136. Noop()
  137. }
  138. var FileInfoTypeUnion = types.NewTypeUnion[JobFileInfo](
  139. (*PackageJobFileInfo)(nil),
  140. (*LocalJobFileInfo)(nil),
  141. (*DataReturnJobFileInfo)(nil),
  142. (*ImageJobFileInfo)(nil),
  143. )
  144. var _ = serder.UseTypeUnionInternallyTagged(&FileInfoTypeUnion, "type")
  145. type JobFileInfoBase struct{}
  146. func (i *JobFileInfoBase) Noop() {}
  147. type PackageJobFileInfo struct {
  148. serder.Metadata `union:"Package"`
  149. JobFileInfoBase
  150. Type string `json:"type"`
  151. PackageID cdssdk.PackageID `json:"packageID"`
  152. }
  153. type LocalJobFileInfo struct {
  154. serder.Metadata `union:"LocalFile"`
  155. JobFileInfoBase
  156. Type string `json:"type"`
  157. LocalPath string `json:"localPath"`
  158. }
  159. type DataReturnJobFileInfo struct {
  160. serder.Metadata `union:"DataReturn"`
  161. JobFileInfoBase
  162. Type string `json:"type"`
  163. DataReturnLocalJobID string `json:"dataReturnLocalJobID"`
  164. }
  165. type ImageJobFileInfo struct {
  166. serder.Metadata `union:"Image"`
  167. JobFileInfoBase
  168. Type string `json:"type"`
  169. ImageID ImageID `json:"imageID"`
  170. }
  171. type JobRuntimeInfo struct {
  172. Command string `json:"command"`
  173. Envs []KVPair `json:"envs"`
  174. }
  175. type KVPair struct {
  176. Key string `json:"key"`
  177. Value string `json:"value"`
  178. }
  179. // CPU、GPU、NPU、MLU单位为:核
  180. // Storage、Memory单位为:字节
  181. type JobResourcesInfo struct {
  182. CPU float64 `json:"cpu"`
  183. GPU float64 `json:"gpu"`
  184. NPU float64 `json:"npu"`
  185. MLU float64 `json:"mlu"`
  186. Storage int64 `json:"storage"`
  187. Memory int64 `json:"memory"`
  188. }
  189. type JobSetFilesUploadScheme struct {
  190. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  191. }
  192. type JobFilesUploadScheme struct {
  193. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  194. }
  195. type LocalFileUploadScheme struct {
  196. LocalPath string `json:"localPath"`
  197. UploadToCDSNodeID *cdssdk.HubID `json:"uploadToCDSNodeID"`
  198. }
  199. type JobServicesInfo struct {
  200. ServicePortInfos []ServicePortInfo `json:"servicePortInfos"`
  201. }
  202. type ServicePortInfo struct {
  203. Name string `json:"name"`
  204. Port int64 `json:"port"`
  205. }
  206. type JobSetServiceInfo struct {
  207. Name string `json:"name"`
  208. Port int64 `json:"port"`
  209. CDSNodeID *cdssdk.HubID `json:"cdsNodeID"`
  210. LocalJobID string `json:"localJobID"`
  211. }
  212. type Bootstrap interface {
  213. GetBootstrapType() string
  214. }
  215. type DirectBootstrap struct {
  216. serder.Metadata `union:"Direct"`
  217. Type string `json:"type"`
  218. }
  219. type NoEnvBootstrap struct {
  220. serder.Metadata `union:"NoEnv"`
  221. Type string `json:"type"`
  222. ScriptPackageID cdssdk.PackageID `json:"scriptPackageID"`
  223. ScriptFileName string `json:"scriptFileName"`
  224. }
  225. var BootstrapTypeUnion = types.NewTypeUnion[Bootstrap](
  226. (*DirectBootstrap)(nil),
  227. (*NoEnvBootstrap)(nil),
  228. )
  229. var _ = serder.UseTypeUnionInternallyTagged(&BootstrapTypeUnion, "type")
  230. func (b *DirectBootstrap) GetBootstrapType() string {
  231. return b.Type
  232. }
  233. func (b *NoEnvBootstrap) GetBootstrapType() string {
  234. return b.Type
  235. }
  236. const (
  237. JobDataInEnv = "SCH_DATA_IN"
  238. JobDataOutEnv = "SCH_DATA_OUT"
  239. FinetuningOutEnv = "FINETUNING_OUT"
  240. AccessPath = "ACCESS_PATH"
  241. )
  242. type Rclone struct {
  243. CDSRcloneID string `json:"cds_rcloneID"`
  244. CDSRcloneConfigID string `json:"cds_rcloneConfigID"`
  245. }
  246. type InferencePlatform struct {
  247. PlatformName string `json:"platformName"`
  248. ApiBaseUrl string `json:"apiBaseUrl"`
  249. ApiKey string `json:"apiKey"`
  250. ApiProxy string `json:"apiProxy"`
  251. LlmModel string `json:"llmModel"`
  252. EmbedModel string `json:"embedModel"`
  253. ChunkMaxLength string `json:"chunkMaxLength"`
  254. StartChunkThreshold string `json:"startChunkThreshold"`
  255. SimilarityThreshold string `json:"similarityThreshold"`
  256. EntriesPerFile string `json:"entriesPerFile"`
  257. }