MCPcopy Create free account
hub / github.com/OpenPipe/OpenPipe / generate

Method generate

trainer/src/lora_inference/main.py:102–161  ·  view source on GitHub ↗
(self, request: Input)

Source from the content-addressed store, hash-verified

100
101 @modal.method()
102 async def generate(self, request: Input) -> Output:
103 logging.info(f"Processing for model {request.lora_model}")
104 lora_dir = lora_model_cache_dir(request.lora_model)
105
106 if request.lora_model not in self.seen_models:
107 if not os.path.exists(lora_model_cache_dir(request.lora_model)):
108 logging.info(f"Couldn't find model, reloading {lora_dir}")
109 stub.volume.reload()
110
111 if not os.path.exists(lora_model_cache_dir(request.lora_model)):
112 raise Exception(f"Couldn't find model {lora_dir}after reloading!")
113
114 self.seen_models.add(request.lora_model)
115
116 sample_params = SamplingParams(
117 n=request.n,
118 temperature=request.temperature,
119 max_tokens=request.max_tokens,
120 )
121
122 lora_request = LoRARequest(
123 request.lora_model,
124 abs(hash(request.lora_model)),
125 lora_dir,
126 )
127
128 request_id = random_uuid()
129
130 logging.info(f"Generating for request {request_id}")
131 output_generator = self.engine.generate(
132 request.prompt,
133 sample_params,
134 request_id=request_id,
135 lora_request=lora_request,
136 )
137
138 final_output: Union[RequestOutput, None] = None
139 async for request_output in output_generator:
140 # TODO: support streaming
141 final_output = request_output
142
143 if final_output is None:
144 raise Exception("No output generated")
145
146 prompt_tokens = len(final_output.prompt_token_ids)
147 completion_tokens = sum(len(x.token_ids) for x in final_output.outputs)
148
149 output = Output(
150 id=request_id,
151 choices=[
152 Choice(text=choice.text, finish_reason=choice.finish_reason)
153 for choice in final_output.outputs
154 ],
155 usage=Usage(
156 prompt_tokens=prompt_tokens,
157 completion_tokens=completion_tokens,
158 ),
159 )

Callers 1

generateFunction · 0.45

Calls 4

lora_model_cache_dirFunction · 0.85
OutputClass · 0.70
ChoiceClass · 0.70
UsageClass · 0.70

Tested by

no test coverage detected