Преглед изворни кода

fix: load progress in shared worker

Tienson Qin пре 6 месеци
родитељ
комит
1e8d7de446

+ 10 - 10
src/main/frontend/common/file/util.cljs

@@ -76,13 +76,13 @@
 ;; A fast pprint alternative.
 (defn print-prefix-map* [prefix m print-one writer opts]
   (pr-sequential-writer
-    writer
-    (fn [e w opts]
-      (print-one (key e) w opts)
-      (-write w \space)
-      (print-one (val e) w opts))
-    (str prefix "\n{") \newline "}"
-    opts (seq m)))
+   writer
+   (fn [e w opts]
+     (print-one (key e) w opts)
+     (-write w \space)
+     (print-one (val e) w opts))
+   (str prefix "\n{") \newline "}"
+   opts (seq m)))
 
 (defn ugly-pr-str
   "Ugly printing fast, with newlines so that git diffs are smaller"
@@ -91,6 +91,6 @@
     (pr-str x)))
 
 (defn post-message
-  [type data]
-  (when (exists? js/self)
-    (.postMessage js/self (ldb/write-transit-str [type data]))))
+  [type data & {:keys [port]}]
+  (when-let [worker (or port js/self)]
+    (.postMessage worker (ldb/write-transit-str [type data]))))

+ 2 - 0
src/main/frontend/inference_worker/inference_worker.cljs

@@ -67,4 +67,6 @@
                      (glogi-console/install!)
                      (let [port (first (.-ports e))
                            ^js obj #_{:clj-kondo/ignore [:unresolved-symbol]} (InferenceWorker.)]
+                       (reset! infer-worker.text-embedding/*port port)
+                       (.start port)
                        (Comlink/expose obj port))))

+ 6 - 2
src/main/frontend/inference_worker/text_embedding.cljs

@@ -19,6 +19,8 @@
                    (log/info :delete-hnsw-index repo)
                    (.delete hnsw-index))))))
 
+(defonce *port (atom nil))
+
 (def ^:private embedding-opts #js{"pooling" "mean" "normalize" true})
 
 (def ^:private init-max-elems 100)
@@ -181,7 +183,7 @@
    ;;                                             :hnsw-config {:dims 1024}}
    })
 
-(def ^:private *load-model-progress (atom nil))
+(defonce ^:private *load-model-progress (atom nil))
 
 (defn <load-model
   [model-name]
@@ -210,7 +212,9 @@
   (c.m/run-background-task
    ::push-load-model-progress
    (m/reduce
-    (fn [_ v] (worker-util/post-message :vector-search/load-model-progress v))
+    (fn [_ v]
+      (when-let [port @*port]
+        (worker-util/post-message :vector-search/load-model-progress v {:port port})))
     (c.m/throttle 500 (m/watch *load-model-progress)))))
 
 (comment