MCPcopy Index your code
hub / github.com/zai-org/CodeGeeX / generate

Function generate

codegeex/__init__.py:15–69  ·  view source on GitHub ↗
(
    model, 
    tokenizer: CodeGeeXTokenizer, 
    prompt: str, 
    out_seq_length: int,
    seq_length: int = 2048,
    top_k: int = 0,
    top_p: float = 1.0,
    temperature: float = 1.0,
    micro_batch_size: int = 1,
    backend: str = "megatron",
    greedy: bool = False,
    verbose: bool = False,
)

Source from the content-addressed store, hash-verified

13
14
15def generate(
16 model,
17 tokenizer: CodeGeeXTokenizer,
18 prompt: str,
19 out_seq_length: int,
20 seq_length: int = 2048,
21 top_k: int = 0,
22 top_p: float = 1.0,
23 temperature: float = 1.0,
24 micro_batch_size: int = 1,
25 backend: str = "megatron",
26 greedy: bool = False,
27 verbose: bool = False,
28):
29 tokens = tokenizer.encode_code(prompt)
30 n_token_prompt = len(tokens)
31
32 if verbose:
33 print(f"Current prompt:\n{prompt}")
34 print("N_token_prompt:", n_token_prompt)
35
36 generated_codes = []
37 if backend == "megatron":
38 token_stream = get_token_stream(
39 model,
40 tokenizer,
41 seq_length,
42 out_seq_length,
43 [copy.deepcopy(tokens) for _ in range(micro_batch_size)],
44 micro_batch_size=micro_batch_size,
45 topk=top_k,
46 topp=top_p,
47 temperature=temperature,
48 greedy=greedy,
49 )
50 is_finished = [False for _ in range(micro_batch_size)]
51 for i, generated in enumerate(token_stream):
52 generated_tokens = generated[0]
53 for j in range(micro_batch_size):
54 if is_finished[j]:
55 continue
56
57 if generated_tokens[j].cpu().numpy()[-1] == tokenizer.eos_token_id or len(generated_tokens[j]) >= out_seq_length:
58 is_finished[j] = True
59 generated_tokens_ = generated_tokens[j].cpu().numpy().tolist()
60 generated_code = tokenizer.decode_code(generated_tokens_[n_token_prompt:])
61 generated_code = "".join(generated_code)
62 generated_codes.append(generated_code)
63 if verbose:
64 print(f"\nGenerated code {i}:\n{generated_code}")
65
66 if all(is_finished):
67 break
68
69 return generated_codes

Callers

nothing calls this directly

Calls 3

get_token_streamFunction · 0.90
encode_codeMethod · 0.45
decode_codeMethod · 0.45

Tested by

no test coverage detected