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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. AppendRoute(urls []*inference.InferUrl) error
  12. AiType() string
  13. }
  14. type FilteredCluster struct {
  15. urls []*inference.InferUrl
  16. clusterId string
  17. clusterName string
  18. }
  19. type TextInference struct {
  20. inference ITextInference
  21. opt *option.InferOption
  22. storage *database.AiStorage
  23. inferAdapter map[string]map[string]inference.ICluster
  24. errMap map[string]string
  25. adapterName string
  26. }
  27. func New(
  28. inference ITextInference,
  29. opt *option.InferOption,
  30. storage *database.AiStorage,
  31. inferAdapter map[string]map[string]inference.ICluster,
  32. adapterName string) (*TextInference, error) {
  33. return &TextInference{
  34. inference: inference,
  35. opt: opt,
  36. storage: storage,
  37. inferAdapter: inferAdapter,
  38. adapterName: adapterName,
  39. errMap: make(map[string]string),
  40. }, nil
  41. }
  42. func (ti *TextInference) CreateTask() (int64, error) {
  43. id, err := ti.saveTask()
  44. if err != nil {
  45. return 0, err
  46. }
  47. err = ti.saveAiTask(id)
  48. if err != nil {
  49. return 0, err
  50. }
  51. return id, nil
  52. }
  53. func (ti *TextInference) InferTask(id int64) error {
  54. aiTaskList, err := ti.storage.GetAiTaskListById(id)
  55. if err != nil || len(aiTaskList) == 0 {
  56. return err
  57. }
  58. err = ti.updateStatus(aiTaskList)
  59. if err != nil {
  60. return err
  61. }
  62. return nil
  63. }
  64. func (ti *TextInference) saveTask() (int64, error) {
  65. var synergystatus int64
  66. var strategyCode int64
  67. id, err := ti.storage.SaveTask(ti.opt.TaskName, strategyCode, synergystatus, ti.inference.AiType())
  68. if err != nil {
  69. return 0, err
  70. }
  71. return id, nil
  72. }
  73. func (ti *TextInference) saveAiTask(id int64) error {
  74. err := ti.inference.SaveAiTask(id, ti.adapterName)
  75. if err != nil {
  76. return err
  77. }
  78. return nil
  79. }
  80. func (ti *TextInference) updateStatus(aiTaskList []*models.TaskAi) error {
  81. err := ti.inference.UpdateStatus(aiTaskList, ti.adapterName)
  82. if err != nil {
  83. return err
  84. }
  85. return nil
  86. }

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.