Josh Yan 9 月之前
父節點
當前提交
542134bf50
共有 1 個文件被更改,包括 14 次插入5 次删除
  1. 14 5
      llm/llm.go

+ 14 - 5
llm/llm.go

@@ -49,17 +49,26 @@ func Quantize(infile, outfile string, ftype fileType, fn func(resp api.ProgressR
 	params.quantize_callback_data = store
 	params.quantize_callback_data = store
 	params.quantize_callback = (C.llama_progress_callback)(C.update_quantize_progress)
 	params.quantize_callback = (C.llama_progress_callback)(C.update_quantize_progress)
 
 
-	go func () {
+	ticker := time.NewTicker(60 * time.Millisecond)
+	done := make(chan struct{})
+	defer close(done)
+
+	go func() {
+		defer ticker.Stop()
 		for {
 		for {
-			time.Sleep(60 * time.Millisecond)
-			if params.quantize_callback_data == nil {
-				return
-			} else {
+			select {
+			case <-ticker.C:
 				progress := *((*C.float)(store))
 				progress := *((*C.float)(store))
                 fn(api.ProgressResponse{
                 fn(api.ProgressResponse{
                     Status:   fmt.Sprintf("quantizing model %d%%", int(progress*100)),
                     Status:   fmt.Sprintf("quantizing model %d%%", int(progress*100)),
                     Quantize: "quant",
                     Quantize: "quant",
+                })			
+			case <-done:
+                fn(api.ProgressResponse{
+                    Status:  "quantizing model",
+                    Quantize: "quant",
                 })
                 })
+				return
 			}
 			}
 		}
 		}
 	}()
 	}()