Text Generation
Transformers
Safetensors
English
qwen2
chat
conversational
text-generation-inference
Instructions to use Qwen/Qwen2.5-14B-Instruct with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Qwen/Qwen2.5-14B-Instruct with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Qwen/Qwen2.5-14B-Instruct") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-14B-Instruct") model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-14B-Instruct") 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 Qwen/Qwen2.5-14B-Instruct with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Qwen/Qwen2.5-14B-Instruct" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Qwen/Qwen2.5-14B-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Qwen/Qwen2.5-14B-Instruct
- SGLang
How to use Qwen/Qwen2.5-14B-Instruct 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 "Qwen/Qwen2.5-14B-Instruct" \ --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": "Qwen/Qwen2.5-14B-Instruct", "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 "Qwen/Qwen2.5-14B-Instruct" \ --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": "Qwen/Qwen2.5-14B-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Qwen/Qwen2.5-14B-Instruct with Docker Model Runner:
docker model run hf.co/Qwen/Qwen2.5-14B-Instruct
Amazing model. This might be the best Qwen-2.5 has to offer.
#2
by rombodawg - opened
This model is the first sub 22b parameter model ive ever seen be able to code a tetris game in python. Its a little buggy, but it could easily fix this. This is the best AI model that can be run on a 10-12gb gpu EVER (Q6_K_L.gguf), at least at the moment.
Code
import random
import pygame
import sys
# Initialize Pygame
pygame.init()
# Screen dimensions
SCREEN_WIDTH = 300
SCREEN_HEIGHT = 600
GRID_SIZE = 30
GRID_WIDTH = SCREEN_WIDTH // GRID_SIZE
GRID_HEIGHT = SCREEN_HEIGHT // GRID_SIZE
# Colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
CYAN = (0, 255, 255)
MAGENTA = (255, 0, 255)
YELLOW = (255, 255, 0)
# Tetromino shapes
SHAPES = [
[[1, 1], [1, 1]], # O
[[0, 1, 0], [1, 1, 1]], # I
[[1, 1, 1], [0, 1, 0]], # S
[[0, 1, 1], [1, 1, 0]], # Z
[[1, 1, 1], [1, 0, 0]], # T
[[1, 1, 1], [0, 0, 1]], # L
[[1, 1, 1], [1, 0, 0]] # J
]
# Tetromino colors
COLORS = [CYAN, YELLOW, GREEN, RED, MAGENTA, BLUE, WHITE]
class Tetris:
def __init__(self):
self.screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
self.clock = pygame.time.Clock()
self.grid = [[BLACK for _ in range(GRID_WIDTH)] for _ in range(GRID_HEIGHT)]
self.current_piece = None
self.piece_x = 0
self.piece_y = 0
self.game_over = False
def new_piece(self):
shape = random.choice(SHAPES)
color = random.choice(COLORS)
return {'shape': shape, 'color': color}
def draw_grid(self):
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH):
pygame.draw.rect(self.screen, self.grid[y][x], (x * GRID_SIZE, y * GRID_SIZE, GRID_SIZE - 1, GRID_SIZE - 1))
def draw_piece(self, piece, offset_x=0, offset_y=0):
color = piece['color']
shape = piece['shape']
for y in range(len(shape)):
for x in range(len(shape[y])):
if shape[y][x]:
pygame.draw.rect(
self.screen,
color,
((offset_x + x) * GRID_SIZE, (offset_y + y) * GRID_SIZE, GRID_SIZE - 1, GRID_SIZE - 1)
)
def check_collision(self):
for y in range(len(self.current_piece['shape'])):
for x in range(len(self.current_piece['shape'][y])):
if self.current_piece['shape'][y][x]:
grid_x = self.piece_x + x
grid_y = self.piece_y + y
if grid_x < 0 or grid_x >= GRID_WIDTH or grid_y >= GRID_HEIGHT:
return True
if self.grid[grid_y][grid_x] != BLACK:
return True
return False
def lock_piece(self):
shape = self.current_piece['shape']
color = self.current_piece['color']
for y in range(len(shape)):
for x in range(len(shape[y])):
if shape[y][x]:
grid_y = self.piece_y + y
grid_x = self.piece_x + x
# Ensure the position is within bounds before setting it
if 0 <= grid_y < GRID_HEIGHT and 0 <= grid_x < GRID_WIDTH:
self.grid[grid_y][grid_x] = color
def clear_lines(self):
lines_cleared = 0
for i, row in enumerate(self.grid[:-1]):
if all(cell != BLACK for cell in row):
del self.grid[i]
self.grid.insert(0, [BLACK for _ in range(GRID_WIDTH)])
lines_cleared += 1
return lines_cleared
def move_piece_down(self):
if not self.check_collision():
self.piece_y += 1
else:
self.lock_piece()
self.clear_lines()
self.new_piece()
def rotate_piece(self):
original_shape = self.current_piece['shape']
rotated_shape = list(zip(*reversed(original_shape)))
if not self.check_collision():
self.current_piece['shape'] = rotated_shape
def move_piece_left(self):
self.piece_x -= 1
if self.check_collision():
self.piece_x += 1
def move_piece_right(self):
self.piece_x += 1
if self.check_collision():
self.piece_x -= 1
def run(self):
self.current_piece = self.new_piece()
while not self.game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.move_piece_left()
if keys[pygame.K_RIGHT]:
self.move_piece_right()
if keys[pygame.K_UP]:
self.rotate_piece()
if keys[pygame.K_DOWN]:
self.piece_y += 1
if self.check_collision():
self.piece_y -= 1
self.screen.fill(BLACK)
self.draw_grid()
# Draw the current piece and check for collision on next move down
self.draw_piece(self.current_piece, offset_x=self.piece_x, offset_y=self.piece_y)
pygame.display.flip()
if not self.check_collision():
self.piece_y += 1
else:
self.lock_piece()
lines_cleared = self.clear_lines()
# Spawn a new piece after locking the current one
self.current_piece = self.new_piece()
self.piece_x = GRID_WIDTH // 2 - len(self.current_piece['shape'][0]) // 2
self.piece_y = 0
if self.check_collision():
self.game_over = True
self.clock.tick(5)
if __name__ == "__main__":
game = Tetris()
game.run()