Peter0707 commited on
Commit
531596c
·
verified ·
1 Parent(s): 394413c

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +13 -1
README.md CHANGED
@@ -58,6 +58,9 @@ def wrap_prompt(prompt: str, tokenizer) -> str:
58
  return tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
59
 
60
  def detect_gene_token_space(tokenizer):
 
 
 
61
  vocab = tokenizer.get_vocab()
62
  gene_ids = sorted(idx for tok, idx in vocab.items() if tok.startswith(GENE_PREFIX))
63
  if not gene_ids:
@@ -76,12 +79,21 @@ with torch.no_grad():
76
  inputs = tokenizer([text], return_tensors="pt")
77
  inputs = {k: v.to(next(model.parameters()).device) for k, v in inputs.items()}
78
  outputs = model(**inputs)
 
79
  # Take logits for the last token only
80
  logits = outputs.logits[0, -1, :].to("cpu", dtype=torch.float32)
 
81
  # Mask non-gene tokens
82
  gene_token_tensor = gene_token_tensor.to(dtype=torch.long, device=logits.device)
83
  gene_logits = logits[gene_token_tensor]
 
 
84
  order = torch.argsort(gene_logits, descending=True)
 
 
85
  sorted_gene_ids = gene_token_tensor[order]
86
  sorted_gene_tok = tokenizer.convert_ids_to_tokens(sorted_gene_ids.tolist())
87
- ```
 
 
 
 
58
  return tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
59
 
60
  def detect_gene_token_space(tokenizer):
61
+ """
62
+ Used to detect the boundary of special gene tokens in the tokenizer vocabulary for subsequent masking non-gene tokens.
63
+ """
64
  vocab = tokenizer.get_vocab()
65
  gene_ids = sorted(idx for tok, idx in vocab.items() if tok.startswith(GENE_PREFIX))
66
  if not gene_ids:
 
79
  inputs = tokenizer([text], return_tensors="pt")
80
  inputs = {k: v.to(next(model.parameters()).device) for k, v in inputs.items()}
81
  outputs = model(**inputs)
82
+
83
  # Take logits for the last token only
84
  logits = outputs.logits[0, -1, :].to("cpu", dtype=torch.float32)
85
+
86
  # Mask non-gene tokens
87
  gene_token_tensor = gene_token_tensor.to(dtype=torch.long, device=logits.device)
88
  gene_logits = logits[gene_token_tensor]
89
+
90
+ # Sort by logits
91
  order = torch.argsort(gene_logits, descending=True)
92
+
93
+ # Ranked Gene List with Scores (logits)
94
  sorted_gene_ids = gene_token_tensor[order]
95
  sorted_gene_tok = tokenizer.convert_ids_to_tokens(sorted_gene_ids.tolist())
96
+ ```
97
+
98
+ ## Special Gene Token Example
99
+ In `<|PhenoGemini-Special-Token-Entrez-ID-64087|>`, the numeric value after the final hyphen represents the Entrez Gene ID.