Text Generation
Transformers
Safetensors
llama
business
consulting
chatpbc
text-generation-inference
Instructions to use chatpbc1/chatpbc-v33 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use chatpbc1/chatpbc-v33 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="chatpbc1/chatpbc-v33")# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("chatpbc1/chatpbc-v33") model = AutoModelForCausalLM.from_pretrained("chatpbc1/chatpbc-v33", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use chatpbc1/chatpbc-v33 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "chatpbc1/chatpbc-v33" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "chatpbc1/chatpbc-v33", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/chatpbc1/chatpbc-v33
- SGLang
How to use chatpbc1/chatpbc-v33 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 "chatpbc1/chatpbc-v33" \ --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": "chatpbc1/chatpbc-v33", "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 "chatpbc1/chatpbc-v33" \ --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": "chatpbc1/chatpbc-v33", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use chatpbc1/chatpbc-v33 with Docker Model Runner:
docker model run hf.co/chatpbc1/chatpbc-v33
| #!/usr/bin/env python3 | |
| """ | |
| ChatPBC V3.3 Training Script | |
| Train this model on a GPU-enabled environment. | |
| Usage: | |
| python train_v4.py | |
| Requirements: | |
| - GPU with 16GB+ VRAM (A10G, T4, L4, A100, etc.) | |
| - transformers, peft, bitsandbytes, accelerate, datasets | |
| """ | |
| import torch | |
| from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, TrainingArguments, Trainer | |
| from peft import LoraConfig, get_peft_model, TaskType | |
| from datasets import load_dataset | |
| HF_TOKEN = "YOUR_HF_TOKEN_HERE" | |
| BASE_MODEL = "mistralai/Mistral-7B-v0.1" | |
| DATASET_PATH = "chatpbc1/chatpbc-business-consulting-dataset" | |
| OUTPUT_REPO = "chatpbc1/chatpbc-v33" | |
| def reformat_to_mistral(example, max_target_length=400): | |
| text = example["text"] | |
| instruction = "" | |
| input_text = "" | |
| response = "" | |
| if "### Instruction:" in text and "### Response:" in text: | |
| parts = text.split("### Response:") | |
| pre_response = parts[0] | |
| response = parts[1].strip() if len(parts) > 1 else "" | |
| if "### Input:" in pre_response: | |
| inst_parts = pre_response.split("### Input:") | |
| instruction = inst_parts[0].replace("### Instruction:", "").strip() | |
| input_text = inst_parts[1].strip() | |
| else: | |
| instruction = pre_response.replace("### Instruction:", "").strip() | |
| else: | |
| instruction = text | |
| words = response.split() | |
| if len(words) > max_target_length: | |
| response = " ".join(words[:max_target_length]) | |
| if input_text: | |
| prompt = f"<s>[INST] {instruction}\\n\\nContext: {input_text} [/INST]" | |
| else: | |
| prompt = f"<s>[INST] {instruction} [/INST]" | |
| return {"text": prompt + response + "</s>"} | |
| def tokenize_fn(example): | |
| return tokenizer(example["text"], truncation=True, max_length=2048, padding=False) | |
| # Setup | |
| from huggingface_hub import login | |
| login(token=HF_TOKEN) | |
| tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL, token=HF_TOKEN, use_fast=True) | |
| tokenizer.pad_token = tokenizer.eos_token | |
| bnb_config = BitsAndBytesConfig( | |
| load_in_4bit=True, | |
| bnb_4bit_quant_type="nf4", | |
| bnb_4bit_compute_dtype=torch.float16, | |
| bnb_4bit_use_double_quant=True, | |
| ) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| BASE_MODEL, quantization_config=bnb_config, device_map="auto", | |
| torch_dtype=torch.float16, token=HF_TOKEN, | |
| ) | |
| from peft import prepare_model_for_kbit_training | |
| model = prepare_model_for_kbit_training(model) | |
| model.config.use_cache = False | |
| lora_config = LoraConfig( | |
| r=16, lora_alpha=32, | |
| target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], | |
| lora_dropout=0.05, bias="none", task_type=TaskType.CAUSAL_LM, | |
| ) | |
| model = get_peft_model(model, lora_config) | |
| model.print_trainable_parameters() | |
| # Data | |
| dataset = load_dataset(DATASET_PATH, split="train") | |
| sample_size = min(len(dataset), 10000) | |
| sampled = dataset.shuffle(seed=42).select(range(sample_size)) | |
| formatted = sampled.map(lambda x: reformat_to_mistral(x, 1000), remove_columns=sampled.column_names) | |
| tokenized = formatted.map(tokenize_fn, remove_columns=formatted.column_names, num_proc=2) | |
| # Train | |
| class SimpleCollator: | |
| def __call__(self, features): | |
| input_ids = [f["input_ids"] for f in features] | |
| max_len = max(len(x) for x in input_ids) | |
| padded = [x + [tokenizer.pad_token_id] * (max_len - len(x)) for x in input_ids] | |
| attention_mask = [[1] * len(x) + [0] * (max_len - len(x)) for x in input_ids] | |
| labels = padded.copy() | |
| return { | |
| "input_ids": torch.tensor(padded, dtype=torch.long), | |
| "attention_mask": torch.tensor(attention_mask, dtype=torch.long), | |
| "labels": torch.tensor(labels, dtype=torch.long), | |
| } | |
| training_args = TrainingArguments( | |
| output_dir="./chatpbc-v4-output", | |
| num_train_epochs=3, | |
| max_steps=1000, | |
| per_device_train_batch_size=2, | |
| gradient_accumulation_steps=8, | |
| learning_rate=2e-4, | |
| weight_decay=0.01, | |
| warmup_ratio=0.03, | |
| lr_scheduler_type="cosine", | |
| fp16=True, | |
| gradient_checkpointing=True, | |
| logging_steps=50, | |
| save_steps=500, | |
| save_strategy="steps", | |
| evaluation_strategy="no", | |
| push_to_hub=True, | |
| hub_model_id=OUTPUT_REPO, | |
| hub_token=HF_TOKEN, | |
| report_to="none", | |
| optim="paged_adamw_8bit", | |
| max_grad_norm=0.3, | |
| ) | |
| trainer = Trainer( | |
| model=model, args=training_args, train_dataset=tokenized, | |
| data_collator=SimpleCollator(), tokenizer=tokenizer, | |
| ) | |
| trainer.train() | |
| model.push_to_hub(OUTPUT_REPO, token=HF_TOKEN) | |
| tokenizer.push_to_hub(OUTPUT_REPO, token=HF_TOKEN) | |
| print("Training complete! Model uploaded to HF Hub.") | |