llm_instant_model_quota.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package models
  2. type LLMInstanceModelPendingTask struct {
  3. LLMId string
  4. TaskId string
  5. SizeGb float64
  6. }
  7. var llmPendingInstantModelTasks []LLMInstanceModelPendingTask
  8. func init() {
  9. llmPendingInstantModelTasks = make([]LLMInstanceModelPendingTask, 0)
  10. }
  11. func (llm *SLLM) GetInstantModelSizeGb() float64 {
  12. boolTrue := true
  13. models, err := llm.FetchModels(nil, &boolTrue, nil)
  14. if err != nil {
  15. return 0
  16. }
  17. totalSizeGb := 0.0
  18. for _, model := range models {
  19. instModel, _ := GetInstantModelManager().GetInstantModelById(model.InstantModelId)
  20. if instModel == nil {
  21. continue
  22. }
  23. totalSizeGb += float64(instModel.GetActualSizeMb()) * 1024 * 1024 / 1000 / 1000 / 1000
  24. }
  25. return totalSizeGb
  26. }
  27. func (llm *SLLM) GetPendingInstantModelSizeGb() float64 {
  28. var totalSizeGb float64
  29. for _, task := range llmPendingInstantModelTasks {
  30. totalSizeGb += task.SizeGb
  31. }
  32. return totalSizeGb
  33. }
  34. func (llm *SLLM) GetTotalInstantModelSizeGb() float64 {
  35. return llm.GetInstantModelSizeGb() + llm.GetPendingInstantModelSizeGb()
  36. }
  37. func (llm *SLLM) insertPendingInstantModelQuota(taskId string, sizeGb float64) {
  38. llmPendingInstantModelTasks = append(llmPendingInstantModelTasks, LLMInstanceModelPendingTask{
  39. LLMId: llm.Id,
  40. TaskId: taskId,
  41. SizeGb: sizeGb,
  42. })
  43. }
  44. func (llm *SLLM) ClearPendingInstantModelQuota(taskId string) {
  45. for i := range llmPendingInstantModelTasks {
  46. if llmPendingInstantModelTasks[i].TaskId == taskId {
  47. llmPendingInstantModelTasks = append(llmPendingInstantModelTasks[:i], llmPendingInstantModelTasks[i+1:]...)
  48. break
  49. }
  50. }
  51. }