Text Generation
Transformers
Safetensors
qwen2
math-tutor
grpo
conversational
text-generation-inference
Instructions to use eth-nlped/TutorRL-7B-think with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use eth-nlped/TutorRL-7B-think with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="eth-nlped/TutorRL-7B-think") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("eth-nlped/TutorRL-7B-think") model = AutoModelForCausalLM.from_pretrained("eth-nlped/TutorRL-7B-think") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Inference
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use eth-nlped/TutorRL-7B-think with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "eth-nlped/TutorRL-7B-think" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "eth-nlped/TutorRL-7B-think", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/eth-nlped/TutorRL-7B-think
- SGLang
How to use eth-nlped/TutorRL-7B-think 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 "eth-nlped/TutorRL-7B-think" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "eth-nlped/TutorRL-7B-think", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "eth-nlped/TutorRL-7B-think" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "eth-nlped/TutorRL-7B-think", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use eth-nlped/TutorRL-7B-think with Docker Model Runner:
docker model run hf.co/eth-nlped/TutorRL-7B-think
| { | |
| "add_bos_token": false, | |
| "add_prefix_space": false, | |
| "added_tokens_decoder": { | |
| "151643": { | |
| "content": "<|endoftext|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151644": { | |
| "content": "<|im_start|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151645": { | |
| "content": "<|im_end|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151646": { | |
| "content": "<|object_ref_start|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151647": { | |
| "content": "<|object_ref_end|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151648": { | |
| "content": "<|box_start|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151649": { | |
| "content": "<|box_end|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151650": { | |
| "content": "<|quad_start|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151651": { | |
| "content": "<|quad_end|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151652": { | |
| "content": "<|vision_start|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151653": { | |
| "content": "<|vision_end|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151654": { | |
| "content": "<|vision_pad|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151655": { | |
| "content": "<|image_pad|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151656": { | |
| "content": "<|video_pad|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": true | |
| }, | |
| "151657": { | |
| "content": "<tool_call>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": false | |
| }, | |
| "151658": { | |
| "content": "</tool_call>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": false | |
| }, | |
| "151659": { | |
| "content": "<|fim_prefix|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": false | |
| }, | |
| "151660": { | |
| "content": "<|fim_middle|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": false | |
| }, | |
| "151661": { | |
| "content": "<|fim_suffix|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": false | |
| }, | |
| "151662": { | |
| "content": "<|fim_pad|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": false | |
| }, | |
| "151663": { | |
| "content": "<|repo_name|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": false | |
| }, | |
| "151664": { | |
| "content": "<|file_sep|>", | |
| "lstrip": false, | |
| "normalized": false, | |
| "rstrip": false, | |
| "single_word": false, | |
| "special": false | |
| } | |
| }, | |
| "additional_special_tokens": [ | |
| "<|im_start|>", | |
| "<|im_end|>", | |
| "<|object_ref_start|>", | |
| "<|object_ref_end|>", | |
| "<|box_start|>", | |
| "<|box_end|>", | |
| "<|quad_start|>", | |
| "<|quad_end|>", | |
| "<|vision_start|>", | |
| "<|vision_end|>", | |
| "<|vision_pad|>", | |
| "<|image_pad|>", | |
| "<|video_pad|>" | |
| ], | |
| "bos_token": null, | |
| "chat_template": "{%- if tools -%}{{- '<|im_start|>system\\n' -}}{%- if messages[0]['role'] == 'system' -%}{{- messages[0]['content'] -}}{%- else -%}{{- 'You are tasked with being a teacher and helping a student with a math problem.\\n\\nYou must not reveal the answer to the problem to the student at any point in time.\\nYour task is to guide the student to have a complete understanding of the problem.\\nEven if the student is already able to solve the problem, you should help them understand and improve the solution so that they get as high of a grade as possible.\\n\\nIf possible, do not respond with overly long responses to the student.\\n\\nIn order to be able to think of a good hint or approach for the student without revealing steps of the final solution, you can wrap your internal reasoning like this:\\n<think>\\n</think>\\n\\nHere is an example of how you can use the internal reasoning tags:\\n\\nTeacher: <think>\\nThe problem seems to have 5 as an answer. I should probably give a simple hint that the student\\'s calculations are wrong.\\n</think>\\nDoing great so far, could you please recheck your calculations for me?\\n\\nAnything that resides in the think tags will not be visible to the student at all. Thus, do not expect for the student to know what you are thinking.\\nMake sure to always close your thinking and then output the actual message to the user in the same response!' -}}{%- endif -%}{{- '\\n\\n# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>' -}}{%- for tool in tools -%}{{- '\\n' -}}{{- tool | tojson -}}{%- endfor -%}{{- '\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\'name\\': <function-name>, \\'arguments\\': <args-json-object>}\\n</tool_call><|im_end|>\\n' -}}{%- elif messages[0]['role'] == 'system' -%}{{- '<|im_start|>system\\n' + messages[0]['content'] + '<|im_end|>\\n' -}}{%- else -%}{{- '<|im_start|>system\\nYou are tasked with being a teacher and helping a student with a math problem.\\n\\nYou must not reveal the answer to the problem to the student at any point in time.\\nYour task is to guide the student to have a complete understanding of the problem.\\nEven if the student is already able to solve the problem, you should help them understand and improve the solution so that they get as high of a grade as possible.\\n\\nIf possible, do not respond with overly long responses to the student.\\n\\nIn order to be able to think of a good hint or approach for the student without revealing steps of the final solution, you can wrap your internal reasoning like this:\\n<think>\\n</think>\\n\\nHere is an example of how you can use the internal reasoning tags:\\n\\nTeacher: <think>\\nThe problem seems to have 5 as an answer. I should probably give a simple hint that the student\\'s calculations are wrong.\\n</think>\\nDoing great so far, could you please recheck your calculations for me?\\n\\nAnything that resides in the think tags will not be visible to the student at all. Thus, do not expect for the student to know what you are thinking.\\nMake sure to always close your thinking and then output the actual message to the user in the same response!\\n<|im_end|>\\n' -}}{%- endif -%}{%- for message in messages -%}{%- if message.role == 'user' or message.role == 'system' and not loop.first -%}{{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' -}} {%- elif message.role == 'assistant' and not message.tool_calls -%}{{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' -}}{%- elif message.role == 'assistant' -%}{{- '<|im_start|>' + message.role -}}{%- if message.content -%}{{- '\\n' + message.content -}}{%- endif -%}{%- for tool_call in message.tool_calls -%}{%- if tool_call.function is defined -%}{%- set tool_call = tool_call.function -%}{%- endif -%}{{- '\\n<tool_call>\\n{\\'name\\': \\'' -}}{{- tool_call.name -}}{{- '\\', \\'arguments\\': ' -}}{{- tool_call.arguments | tojson -}}{{- '}\\n</tool_call>' -}}{%- endfor -%}{{- '<|im_end|>\\n' -}}{%- elif message.role == 'tool' -%}{%- if loop.index0 == 0 or messages[loop.index0 - 1].role != 'tool' -%}{{- '<|im_start|>user' -}}{%- endif -%}{{- '\\n<tool_response>\\n' -}}{{- message.content -}}{{- '\\n</tool_response>' -}}{%- if loop.last or messages[loop.index0 + 1].role != 'tool' -%}{{- '<|im_end|>\\n' -}}{%- endif -%}{%- endif -%}{%- endfor -%}{%- if add_generation_prompt -%}{{- '<|im_start|>assistant\\n' -}}{%- endif -%}", | |
| "clean_up_tokenization_spaces": false, | |
| "eos_token": "<|im_end|>", | |
| "errors": "replace", | |
| "extra_special_tokens": {}, | |
| "model_max_length": 131072, | |
| "pad_token": "<|endoftext|>", | |
| "split_special_tokens": false, | |
| "tokenizer_class": "Qwen2Tokenizer", | |
| "unk_token": null | |
| } | |