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.

textInference.go 2.3 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package textInference
  2. import (
  3. "gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/database"
  4. "gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/schedulers/option"
  5. "gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/inference"
  6. "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
  7. )
  8. type ITextInference interface {
  9. SaveAiTask(id int64, adapterName string) error
  10. UpdateStatus(aiTaskList []*models.TaskAi, adapterName string) error
  11. GetAiType() string
  12. }
  13. type FilteredCluster struct {
  14. urls []*inference.InferUrl
  15. clusterId string
  16. clusterName string
  17. }
  18. type TextInference struct {
  19. inference ITextInference
  20. opt *option.InferOption
  21. storage *database.AiStorage
  22. inferAdapter map[string]map[string]inference.ICluster
  23. errMap map[string]string
  24. adapterName string
  25. }
  26. func New(
  27. inference ITextInference,
  28. opt *option.InferOption,
  29. storage *database.AiStorage,
  30. inferAdapter map[string]map[string]inference.ICluster,
  31. adapterName string) (*TextInference, error) {
  32. return &TextInference{
  33. inference: inference,
  34. opt: opt,
  35. storage: storage,
  36. inferAdapter: inferAdapter,
  37. adapterName: adapterName,
  38. errMap: make(map[string]string),
  39. }, nil
  40. }
  41. func (ti *TextInference) CreateTask() (int64, error) {
  42. id, err := ti.saveTask()
  43. if err != nil {
  44. return 0, err
  45. }
  46. err = ti.saveAiTask(id)
  47. if err != nil {
  48. return 0, err
  49. }
  50. return id, nil
  51. }
  52. func (ti *TextInference) InferTask(id int64) error {
  53. aiTaskList, err := ti.storage.GetAiTaskListById(id)
  54. if err != nil || len(aiTaskList) == 0 {
  55. return err
  56. }
  57. err = ti.updateStatus(aiTaskList)
  58. if err != nil {
  59. return err
  60. }
  61. return nil
  62. }
  63. func (ti *TextInference) saveTask() (int64, error) {
  64. var synergystatus int64
  65. var strategyCode int64
  66. id, err := ti.storage.SaveTask(ti.opt.TaskName, strategyCode, synergystatus, ti.inference.GetAiType())
  67. if err != nil {
  68. return 0, err
  69. }
  70. return id, nil
  71. }
  72. func (ti *TextInference) saveAiTask(id int64) error {
  73. err := ti.inference.SaveAiTask(id, ti.adapterName)
  74. if err != nil {
  75. return err
  76. }
  77. return nil
  78. }
  79. func (ti *TextInference) updateStatus(aiTaskList []*models.TaskAi) error {
  80. err := ti.inference.UpdateStatus(aiTaskList, ti.adapterName)
  81. if err != nil {
  82. return err
  83. }
  84. return nil
  85. }

PCM is positioned as Software stack over Cloud, aiming to build the standards and ecology of heterogeneous cloud collaboration for JCC in a non intrusive and autonomous peer-to-peer manner.