Instructions to use KexuanShi/Megatron-LM with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- NeMo
How to use KexuanShi/Megatron-LM with NeMo:
# tag did not correspond to a valid NeMo domain.
- Notebooks
- Google Colab
- Kaggle
| # Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |
| import warnings | |
| from dataclasses import dataclass | |
| from typing import List, Optional | |
| class SamplingParams: | |
| """Inference parameters sent along with the prompts. | |
| This class contains request-level attributes that control the sampling techniques used when | |
| generating text. This is distinct from megatron.core.inference.contexts.BaseInferenceContext, | |
| which is sets model-level | |
| inference attributes such as the maximum sequence length, and contains the KV cache. | |
| For an explanation of these parameters refer to this blog | |
| https://ivibudh.medium.com/a-guide-to-controlling-llm-model-output-exploring-top-k-top-p-and- | |
| temperature-parameters-ed6a31313910 | |
| """ | |
| temperature: float = 1.0 | |
| top_k: int = 0 | |
| top_p: float = 0.0 | |
| return_log_probs: bool = False | |
| skip_prompt_log_probs: bool = False | |
| return_segments: bool = False # Whether to return individually detokenized tokens | |
| num_tokens_to_generate: int = 30 | |
| num_tokens_total: Optional[int] = None # Cannot set both this and num_tokens_to_generate | |
| termination_id: Optional[int] = None | |
| top_n_logprobs: int = 0 | |
| return_prompt_top_n_logprobs: bool = False # Deprecated field for backwards compatibility | |
| add_BOS: bool = False | |
| stop_words: Optional[List[str]] = ( | |
| None # List of strings that will stop generation when produced | |
| ) | |
| def __post_init__(self): | |
| """Ensure backward compatibility for return_prompt_top_n_logprobs. | |
| Sets return_prompt_top_n_logprobs based on skip_prompt_log_probs and top_n_logprobs: | |
| - return_prompt_top_n_logprobs = not skip_prompt_log_probs and top_n_logprobs > 0 | |
| """ | |
| self._sync_prompt_logprobs_fields() | |
| def _sync_prompt_logprobs_fields(self): | |
| """Synchronize return_prompt_top_n_logprobs with skip_prompt_log_probs.""" | |
| if self.return_prompt_top_n_logprobs: | |
| warnings.warn( | |
| "return_prompt_top_n_logprobs is deprecated, use skip_prompt_log_probs instead", | |
| DeprecationWarning, | |
| ) | |
| assert ( | |
| not self.skip_prompt_log_probs | |
| ), "return_prompt_top_n_logprobs requires skip_prompt_log_probs to be False" | |
| if self.top_n_logprobs > 0: | |
| self.return_prompt_top_n_logprobs = not self.skip_prompt_log_probs | |
| else: | |
| self.return_prompt_top_n_logprobs = False | |
| def add_attributes(self, attribute_value_pair: dict): | |
| """Utility to add more attributes to sampling params | |
| Use this method to pass in a custom dictionary to add more sampling parameter attributes. | |
| c = SamplingParams | |
| c.add_attributes({'min_length':4, 'eod_id':153}) | |
| Args: | |
| attribute_value_pair (dict): A dictionary containing attributes as the key names and | |
| their values as the values. | |
| """ | |
| for key, value in attribute_value_pair.items(): | |
| setattr(self, key, value) | |
| # Synchronize fields after setting attributes | |
| self._sync_prompt_logprobs_fields() | |
| def serialize(self) -> dict: | |
| """Return a dictionary that is msgpack-serializable.""" | |
| return self.__dict__.copy() | |
| def deserialize(cls, data: dict) -> "SamplingParams": | |
| """Construct SamplingParams from a msgpack-compatible dictionary.""" | |
| obj = cls() | |
| obj.add_attributes(data) | |
| return obj | |