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

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