Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6194787

Browse files
committed
Working simple python thread metrics
1 parentf2cd20c commit6194787

File tree

1 file changed

+62
-5
lines changed

1 file changed

+62
-5
lines changed

‎pgml-extension/src/bindings/transformers/transformers.py

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
importtime
55
importqueue
66
importsys
7+
importjson
78

89
importdatasets
910
fromInstructorEmbeddingimportINSTRUCTOR
@@ -41,7 +42,7 @@
4142
TrainingArguments,
4243
Trainer,
4344
)
44-
fromthreadingimportThread
45+
importthreading
4546
fromtypingimportOptional
4647

4748
__cache_transformer_by_model_id= {}
@@ -64,6 +65,26 @@
6465
}
6566

6667

68+
classWorkerThreads:
69+
def__init__(self):
70+
self.worker_threads= {}
71+
72+
defdelete_thread(self,id):
73+
delself.worker_threads[id]
74+
75+
defupdate_thread(self,id,value):
76+
self.worker_threads[id]=value
77+
78+
defget_thread(self,id):
79+
ifidinself.worker_threads:
80+
returnself.worker_threads[id]
81+
else:
82+
returnNone
83+
84+
85+
worker_threads=WorkerThreads()
86+
87+
6788
classPgMLException(Exception):
6889
pass
6990

@@ -107,6 +128,12 @@ def __init__(self, tokenizer, skip_prompt=False, timeout=None, **decode_kwargs):
107128
self.token_cache= []
108129
self.text_index_cache= []
109130

131+
defset_worker_thread_id(self,id):
132+
self.worker_thread_id=id
133+
134+
defget_worker_thread_id(self):
135+
returnself.worker_thread_id
136+
110137
defput(self,values):
111138
ifself.skip_promptandself.next_tokens_are_prompt:
112139
self.next_tokens_are_prompt=False
@@ -151,6 +178,22 @@ def __next__(self):
151178
returnvalue
152179

153180

181+
defstreaming_worker(worker_threads,model,**kwargs):
182+
thread_id=threading.get_native_id()
183+
try:
184+
worker_threads.update_thread(
185+
thread_id,json.dumps({"model":model.name_or_path})
186+
)
187+
except:
188+
worker_threads.update_thread(thread_id,"Error setting data")
189+
try:
190+
model.generate(**kwargs)
191+
exceptBaseExceptionaserror:
192+
print(f"Error in streaming_worker:{error}",file=sys.stderr)
193+
finally:
194+
worker_threads.delete_thread(thread_id)
195+
196+
154197
classGGMLPipeline(object):
155198
def__init__(self,model_name,**task):
156199
importctransformers
@@ -187,7 +230,7 @@ def do_work():
187230
self.q.put(x)
188231
self.done=True
189232

190-
thread=Thread(target=do_work)
233+
thread=threading.Thread(target=do_work)
191234
thread.start()
192235

193236
def__iter__(self):
@@ -285,7 +328,13 @@ def stream(self, input, timeout=None, **kwargs):
285328
input,add_generation_prompt=True,tokenize=False
286329
)
287330
input=self.tokenizer(input,return_tensors="pt").to(self.model.device)
288-
generation_kwargs=dict(input,streamer=streamer,**kwargs)
331+
generation_kwargs=dict(
332+
input,
333+
worker_threads=worker_threads,
334+
model=self.model,
335+
streamer=streamer,
336+
**kwargs,
337+
)
289338
else:
290339
streamer=TextIteratorStreamer(
291340
self.tokenizer,
@@ -294,9 +343,17 @@ def stream(self, input, timeout=None, **kwargs):
294343
input=self.tokenizer(input,return_tensors="pt",padding=True).to(
295344
self.model.device
296345
)
297-
generation_kwargs=dict(input,streamer=streamer,**kwargs)
298-
thread=Thread(target=self.model.generate,kwargs=generation_kwargs)
346+
generation_kwargs=dict(
347+
input,
348+
worker_threads=worker_threads,
349+
model=self.model,
350+
streamer=streamer,
351+
**kwargs,
352+
)
353+
# thread = Thread(target=self.model.generate, kwargs=generation_kwargs)
354+
thread=threading.Thread(target=streaming_worker,kwargs=generation_kwargs)
299355
thread.start()
356+
streamer.set_worker_thread_id(thread.native_id)
300357
returnstreamer
301358

302359
def__call__(self,inputs,**kwargs):

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp