Dataford
Interview QuestionsInterview GuidesExperiencesMock InterviewsPricing
Get started

Sampling From Scratch in Python

HardPython00:00
Practice interviewer
In session
5 left
00:00

Your question is Sampling From Scratch in Python. Start with the requirements on the right.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.

Problem

Scale's GenAI Data Engine may need to sample the next token from a language model's logits. Implement temperature scaling and nucleus, or top-p, sampling from scratch without using machine learning libraries.

Given a list of token logits, a positive temperature, a cumulative probability threshold top_p, and a random seed, return one sampled token index.

Formal Specification

Implement sample_next_token(logits, temperature, top_p, seed), where logits is a non-empty list of real numbers. First divide every logit by temperature, then compute a numerically stable softmax distribution. Sort tokens by descending probability, breaking ties by ascending token index. Keep the smallest prefix whose cumulative probability is at least top_p, renormalize the retained probabilities, and draw one token using random.Random(seed).

Return the selected token's original index as an integer. Do not mutate logits.

Constraints

  • 1 <= len(logits) <= 10^5
  • -10^9 <= logits[i] <= 10^9
  • 0 < temperature <= 10^3
  • 0 < top_p <= 1
  • seed is a non-negative integer
  • The input list must not be mutated

Function Signature

def sample_next_token(logits, temperature, top_p, seed):
Your solutionPython 3
You need to log in / sign up to run or submit.
Run your code to see test output