Instructions to use AlumiK/LingLong-317M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use AlumiK/LingLong-317M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="AlumiK/LingLong-317M", trust_remote_code=True)# Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("AlumiK/LingLong-317M", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use AlumiK/LingLong-317M with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "AlumiK/LingLong-317M" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AlumiK/LingLong-317M", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/AlumiK/LingLong-317M
- SGLang
How to use AlumiK/LingLong-317M with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "AlumiK/LingLong-317M" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AlumiK/LingLong-317M", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "AlumiK/LingLong-317M" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AlumiK/LingLong-317M", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use AlumiK/LingLong-317M with Docker Model Runner:
docker model run hf.co/AlumiK/LingLong-317M
| import string | |
| from tokenizers import ( | |
| Tokenizer as HFTokenizer, | |
| normalizers, | |
| pre_tokenizers, | |
| models, | |
| decoders, | |
| ) | |
| from transformers.tokenization_utils_fast import PreTrainedTokenizerFast | |
| class LingLongTokenizerFast(PreTrainedTokenizerFast): | |
| vocab_files_names = {'vocab_file': 'tokenizer.txt', 'tokenizer_file': 'tokenizer.json'} | |
| model_input_names = ['input_ids', 'attention_mask'] | |
| class CustomDecoder: | |
| def decode_chain(tokens: list[str]) -> list[str]: | |
| new_tokens = [] | |
| for token in tokens: | |
| if token.startswith('##'): | |
| new_tokens.append(token[2:]) | |
| else: | |
| new_tokens.append(' ' + token) | |
| # Remove whitespaces between Chinese characters. | |
| # TODO: This will remove whitespaces between some English words as well. Need fix. | |
| alphabet_set = set(list(string.ascii_letters)) | |
| for i in range(len(new_tokens)): | |
| if new_tokens[i][0] == ' ': | |
| if new_tokens[i][1] not in alphabet_set or i == 0: | |
| new_tokens[i] = new_tokens[i][1:] | |
| return new_tokens | |
| def __init__( | |
| self, | |
| vocab_file: str | None = None, | |
| tokenizer_file: str | None = None, | |
| do_lower_case: bool = True, | |
| do_basic_tokenize: bool = True, | |
| unk_token: str = '<unk>', | |
| sep_token: str = '<sep>', | |
| pad_token: str = '<pad>', | |
| cls_token: str = '<cls>', | |
| mask_token: str = '<mask>', | |
| bos_token: str = '<|startoftext|>', | |
| eos_token: str = '<|endoftext|>', | |
| tokenize_chinese_chars: bool = True, | |
| strip_accents: bool | None = None, | |
| **kwargs, | |
| ): | |
| backend_tokenizer = None | |
| if tokenizer_file is None: | |
| backend_tokenizer = HFTokenizer( | |
| models.WordPiece.from_file( | |
| vocab=vocab_file, | |
| unk_token=unk_token, | |
| max_input_chars_per_word=100, | |
| ), | |
| ) | |
| backend_tokenizer.add_special_tokens( | |
| [unk_token, sep_token, pad_token, cls_token, mask_token, bos_token, eos_token], | |
| ) | |
| normalizer_sequence = [normalizers.Replace('\n', sep_token)] | |
| if do_basic_tokenize: | |
| normalizer_sequence.append( | |
| normalizers.BertNormalizer( | |
| handle_chinese_chars=tokenize_chinese_chars, | |
| strip_accents=strip_accents, | |
| lowercase=do_lower_case, | |
| ), | |
| ) | |
| backend_tokenizer.normalizer = normalizers.Sequence(normalizer_sequence) | |
| backend_tokenizer.pre_tokenizer = pre_tokenizers.Sequence([ | |
| pre_tokenizers.Digits(individual_digits=True), | |
| pre_tokenizers.Punctuation(), | |
| pre_tokenizers.WhitespaceSplit(), | |
| ]) | |
| super().__init__( | |
| tokenizer_file=tokenizer_file, | |
| tokenizer_object=backend_tokenizer, | |
| unk_token=unk_token, | |
| sep_token=sep_token, | |
| pad_token=pad_token, | |
| cls_token=cls_token, | |
| mask_token=mask_token, | |
| bos_token=bos_token, | |
| eos_token=eos_token, | |
| do_lower_case=do_lower_case, | |
| do_basic_tokenize=do_basic_tokenize, | |
| tokenize_chinese_chars=tokenize_chinese_chars, | |
| strip_accents=strip_accents, | |
| **kwargs, | |
| ) | |
| self._tokenizer.decoder = decoders.Decoder.custom(self.CustomDecoder()) | |
| self.add_special_tokens({'additional_special_tokens': [f'<unused{i}>' for i in range(1, 11)]}) | |
| def save_vocabulary(self, save_directory: str, filename_prefix: str | None = None) -> tuple[str]: | |
| files = self.backend_tokenizer.model.save(save_directory, name=filename_prefix) | |
| return tuple(files) | |
| def save_pretrained(self, *args, **kwargs) -> tuple[str]: | |
| self._tokenizer.decoder = decoders.WordPiece() | |
| return super().save_pretrained(*args, **kwargs) | |