alt.freeweights.abliterated / Huihui-gpt-oss-20b-BF16-abliterated
From: huihui-ai <huggingface.co/huihui-ai>Newsgroups: alt.freeweights.abliteratedSubject:

Huihui-gpt-oss-20b-BF16-abliterated

Date: 2026-11-15Commit: b73ec89Signed: 2DC28CC7B26A283B ✓

Text generation model with 20.9B parameters. Gguf and safetensors weights, 135 GB in all. Published by huihui-ai under Apache-2.0. Changed from the base model.

20.9B params135GBHuihui-gpt-oss-20b-BF16-abliteratedgguf safetensorspermissive
FactsParams20.9BSize135 GBFormatsgguf, safetensorsTasktext generationLicenseApache-2.0From sourcepermissive
$ fw get huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated
# manifest sha256 72077728cb5e… · 135 GB · 22 files
$ fw verify ./Huihui-gpt-oss-20b-BF16-abliterated huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated
From sourceHosted (signed)huihui-ai/Huihui-gpt-oss-20b-BF16-abliteratedLast check: 2026-11-15 04:42 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of gpt-oss-20b-BF16.

Works with

Overview

Size
135 GB
Weights
92.8 GB (GGUF)
Parameters
20.9B
Formats
gguf, safetensors
Task
text generation
License
Apache-2.0 (permissive)
Files
22, each with a sha256
Publisher
huihui-ai
Added
2026-11-15
Section
alt.freeweights.abliterated
Lineage

Changed from the base model. The uploader's repo is named abliterated: refusal behavior was removed from unsloth/gpt-oss-20b-BF16 by the uploader. Read the model card at the source for the method and the layers touched.

Base model: unsloth/gpt-oss-20b-BF16

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:42 UTCpassed

Model card

From the publisher at commit b73ec89. Shown as plain text with links; images open at the publisher.

huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated#

This is an uncensored version of unsloth/gpt-oss-20b-BF16 created with abliteration (see remove-refusals-with-transformers to know more about it).

New Version: huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated-v2

ollama#

Ollama requires the latest version: v0.11.8

You can use huihui_ai/gpt-oss-abliterated directly,

ollama run huihui_ai/gpt-oss-abliterated

GGUF#

llama.cpp-b6115 now supports conversion to GGUF format and can be tested using llama-cli.

The GGUF file has been uploaded.

llama-cli -m huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated/GGUF/ggml-model-Q4_K_M.gguf -n 8192

Usage#

You can use this model in your applications by loading it with Hugging Face's transformers library:

from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
import torch
import os
import signal
import random
import numpy as np
import time
from collections import Counter

cpu_count = os.cpu_count()
print(f"Number of CPU cores in the system: {cpu_count}")
half_cpu_count = cpu_count // 2
os.environ["MKL_NUM_THREADS"] = str(half_cpu_count)
os.environ["OMP_NUM_THREADS"] = str(half_cpu_count)
torch.set_num_threads(half_cpu_count)

print(f"PyTorch threads: {torch.get_num_threads()}")
print(f"MKL threads: {os.getenv('MKL_NUM_THREADS')}")
print(f"OMP threads: {os.getenv('OMP_NUM_THREADS')}")

# Load the model and tokenizer
NEW_MODEL_ID = "huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated"
print(f"Load Model {NEW_MODEL_ID} ... ")

model = AutoModelForCausalLM.from_pretrained(
    NEW_MODEL_ID, 
    device_map="auto", 
    trust_remote_code=True,
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
)
#print(model)
#print(model.config)

tokenizer = AutoTokenizer.from_pretrained(NEW_MODEL_ID, trust_remote_code=True)

messages = []
skip_prompt=False
skip_special_tokens=False
do_sample = True

class CustomTextStreamer(TextStreamer):
    def __init__(self, tokenizer, skip_prompt=True, skip_special_tokens=True):
        super().__init__(tokenizer, skip_prompt=skip_prompt, skip_special_tokens=skip_special_tokens)
        self.generated_text = ""
        self.stop_flag = False
        self.init_time = time.time()  # Record initialization time
        self.end_time = None  # To store end time
        self.first_token_time = None  # To store first token generation time
        self.token_count = 0  # To track total tokens

    def on_finalized_text(self, text: str, stream_end: bool = False):
        if self.first_token_time is None and text.strip():  # Set first token time on first non-empty text
            self.first_token_time = time.time()
        self.generated_text += text
        # Count tokens in the generated text
        tokens = self.tokenizer.encode(text, add_special_tokens=False)
        self.token_count += len(tokens)
        print(text, end="", flush=True)
        if stream_end:
            self.end_time = time.time()  # Record end time when streaming ends
        if self.stop_flag:
            raise StopIteration

    def stop_generation(self):
        self.stop_flag = True
        self.end_time = time.time()  # Record end time when generation is stopped

    def get_metrics(self):
        """Returns initialization time, first token time, first token latency, end time, total time, total tokens, and tokens per second."""
        if self.end_time is None:
            self.end_time = time.time()  # Set end time if not already set
        total_time = self.end_time - self.init_time  # Total time from init to end
        tokens_per_second = self.token_count / total_time if total_time > 0 else 0
        first_token_latency = (self.first_token_time - self.init_time) if self.first_token_time is not None else None
        metrics = {
            "init_time": self.init_time,
            "first_token_time": self.first_token_time,
            "first_token_latency": first_token_latency,
            "end_time": self.end_time,
            "total_time": total_time,  # Total time in seconds
            "total_tokens": self.token_count,
            "tokens_per_second": tokens_per_second
        }
        return metrics
        
def generate_stream(model, tokenizer, messages, skip_prompt, skip_special_tokens, do_sample, max_new_tokens):
    input_ids = tokenizer.apply_chat_template(
        messages,
        add_generation_prompt=True,
        return_tensors="pt",
        return_dict=True,
    ).to(model.device)

    streamer = CustomTextStreamer(tokenizer, skip_prompt=skip_prompt, skip_special_tokens=skip_special_tokens)

    def signal_handler(sig, frame):
        streamer.stop_generation()
        print("\n[Generation stopped by user with Ctrl+C]")

    signal.signal(signal.SIGINT, signal_handler)

    generate_kwargs = {}
    if do_sample:
        generate_kwargs = {
              "do_sample": do_sample,
              "max_length": max_new_tokens,
              "temperature": 0.7,
              "top_k": 20,
              "top_p": 0.8,
              "repetition_penalty": 1.2,
              "no_repeat_ngram_size": 2
        }
    else:
        generate_kwargs = {
              "do_sample": do_sample,
              "max_length": max_new_tokens,
              "repetition_penalty": 1.2,
              "no_repeat_ngram_size": 2
        }
  
          
    print("Response: ", end="", flush=True)
    try:
        generated_ids = model.generate(
            **input_ids,
            streamer=streamer,
            **generate_kwargs
        )
        del generated_ids
    except StopIteration:
        print("\n[Stopped by user]")

    del input_ids
    torch.cuda.empty_cache()
    signal.signal(signal.SIGINT, signal.SIG_DFL)

    return streamer.generated_text, streamer.stop_flag, streamer.get_metrics()

while True:
    print(f"skip_prompt: {skip_prompt}")
    print(f"skip_special_tokens: {skip_special_tokens}")
    print(f"do_sample: {do_sample}")
    
    user_input = input("User: ").strip()
    if user_input.lower() == "/exit":
        print("Exiting chat.")
        break
    if user_input.lower() == "/clear":
        messages = []
        print("Chat history cleared. Starting a new conversation.")
        continue
    if user_input.lower() == "/skip_prompt":
        skip_prompt = not skip_prompt
        continue
    if user_input.lower() == "/skip_special_tokens":
        skip_special_tokens = not skip_special_tokens
        continue
    if user_input.lower() == "/do_sample":
        do_sample = not do_sample
        continue
    if not user_input:
        print("Input cannot be empty. Please enter something.")
        continue
    

    messages.append({"role": "user", "content": user_input})
    response, stop_flag, metrics = generate_stream(model, tokenizer, messages, skip_prompt, skip_special_tokens, do_sample, 40960)
    print("\n\nMetrics:")
    for key, value in metrics.items():
        print(f"  {key}: {value}")

    print("", flush=True)
    if stop_flag:
        continue
    messages.append({"role": "assistant", "content": response})

Usage Warnings#

  • Risk of Sensitive or Controversial Outputs: This model’s safety filtering has been significantly reduced, potentially generating sensitive, controversial, or inappropriate content. Users should exercise caution and rigorously review generated outputs.
  • Not Suitable for All Audiences: Due to limited content filtering, the model’s outputs may be inappropriate for public settings, underage users, or applications requiring high security.
  • Legal and Ethical Responsibilities: Users must ensure their usage complies with local laws and ethical standards. Generated content may carry legal or ethical risks, and users are solely responsible for any consequences.
  • Research and Experimental Use: It is recommended to use this model for research, testing, or controlled environments, avoiding direct use in production or public-facing commercial applications.
  • Monitoring and Review Recommendations: Users are strongly advised to monitor model outputs in real-time and conduct manual reviews when necessary to prevent the dissemination of inappropriate content.
  • No Default Safety Guarantees: Unlike standard models, this model has not undergone rigorous safety optimization. huihui.ai bears no responsibility for any consequences arising from its use.
Donation#
Your donation helps us continue our further development and improvement, a cup of coffee can do it.#
  • bitcoin:
  bc1qqnkhuchxw0zqjh2ku3lu4hq45hc6gy84uk70ge

Files

22 files · 135 GBWeights 92.8 GB (GGUF). Sizes and sha256 from the signed manifest.
Show all 22 files with their sha256
FileSizesha256
.gitattributes1.82 KBf335a3e1b5fda5da25b3d11ff23695edac6682c2ffc962f3aafe50e3291d638f
GGUF/ggml-model-Q3_K_M.gguf12.9 GB4a8b09386e8087d6ebf80f3172fdef7c365bba17aede493571a4d7db8bef3b06
GGUF/ggml-model-Q4_K_M.gguf15.8 GBe01aba477beff0c8c43bf4c0faa8b1b14ceaa1adba8d7849a30cb8ba79a8eeda
GGUF/ggml-model-f16.gguf41.9 GB6cf7ab850cd396ab7b5ba20a1ddf16b291fe6de513f0ed0ccf578c00b685d9f8
GGUF/ggml-model-q8_0.gguf22.3 GBf502921389443b29992ca9f075941d9ee0c8e56dd8a8712b8fb90286ef136d4c
README.md9.23 KBae509b738016d27757a8293c3df637fbc30973a5b5172bffab22980def5699bd
chat_template.jinja15.4 KB507276286525af4511bae17f2a78222038c175f542fd1f9c523fd59e5e51bdfa
config.json1.69 KB1f9d747f7ccc3dd8cc88ede04260f49b63cc45ec6684072ebd95e53bcba9b50d
generation_config.json175 B5dff34966bd012d65a9e6617793883209ad065cb33716aceb8b756ca4f9707de
model-00001-of-00009.safetensors4.50 GB88868ce20327a95a8f2d3ba66c0833c2d6544fe04349ac2a1eb8971853d1dbe8
model-00002-of-00009.safetensors4.94 GBa38d5331c0a5425e7fce1a7b2f03a3858d5f7e27ee1a86db6103f8192331b3d4
model-00003-of-00009.safetensors4.94 GBe397b49bdf236be257a728243afa19ad96ced9ff0e1e4e49f33991bcd1bd883d
model-00004-of-00009.safetensors4.94 GB9d42f79dbeee64c434203e45baadcaa8642e4fe2e7ae9192a9da5414803e6543
model-00005-of-00009.safetensors4.94 GB3c952d81437079677e0ad5ed816bd69ccfc96ba1f6bcc81eb671b8ad18dddf48
model-00006-of-00009.safetensors4.94 GB761e2dcff304c71d06ae372b83b925ec718a0335a652dacb2f16da07f8ed836b
model-00007-of-00009.safetensors4.94 GB34e28f9a595921f46f62d35a7f8bb140b39384922c178316cbcce43172346d34
model-00008-of-00009.safetensors4.94 GBc0542dfb0fad73408a87194159bb0715e067f3f1b650d359249acbf317784ba5
model-00009-of-00009.safetensors2.75 GB9eb975c2cceb4aedf26218085ddee293728654c83bbae85b7704b22ed148e5a7
model.safetensors.index.json34.1 KB7f6854055b376f78c46f86e2de78e97c15eeefe478632bfd8a08682ba83fab9e
special_tokens_map.json463 B9ee667e324910c037718c9251f2ec97cec5530b6789a52a4d95328e61f110512
tokenizer.json27.9 MB0614fe83cadab421296e664e1f48f4261fa8fef6e03e63bb75c20f38e37d07d3
tokenizer_config.json4.38 KBc1fcc2267ac02a6890686fa46bcd390712e743a775762330869d86ea82142446
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
b73ec897fe pinned now2026-11-15 04:42 UTC22 files · 135 GB

Use it

$ fw get huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated
# manifest sha256 72077728cb5e… · 135 GB · 22 files
$ fw verify ./Huihui-gpt-oss-20b-BF16-abliterated huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated.json --dir ./Huihui-gpt-oss-20b-BF16-abliterated $ python3 fw.py verify ./Huihui-gpt-oss-20b-BF16-abliterated ./huihui-ai__Huihui-gpt-oss-20b-BF16-abliterated.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated --revision b73ec897fe872d5e3fea830d516520537decdde6 --local-dir ./Huihui-gpt-oss-20b-BF16-abliterated
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForCausalLM, AutoTokenizer tok = AutoTokenizer.from_pretrained("huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated", revision="b73ec897fe872d5e3fea830d516520537decdde6") model = AutoModelForCausalLM.from_pretrained("huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated", revision="b73ec897fe872d5e3fea830d516520537decdde6", device_map="auto")
llama.cppDownload one GGUF variant (GGUF, 92.8 GB), then serve it.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated --include "GGUF/*" --local-dir ./Huihui-gpt-oss-20b-BF16-abliterated $ llama-server -m ./Huihui-gpt-oss-20b-BF16-abliterated/GGUF/ggml-model-Q3_K_M.gguf
OllamaMake an Ollama model from the downloaded file.
$ printf 'FROM ./Huihui-gpt-oss-20b-BF16-abliterated/GGUF/ggml-model-Q3_K_M.gguf\n' > Modelfile $ ollama create huihui-gpt-oss-20b-bf16-abliterated -f Modelfile
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated --revision b73ec897fe872d5e3fea830d516520537decdde6

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
ae509b738016d27757a8293c3df637fbc30973a5b5172bffab22980def5699bd
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: huihui-ai <huggingface.co/huihui-ai>Newsgroups: alt.freeweights.abliteratedSubject: Huihui-gpt-oss-20b-BF16-abliteratedDate: 2026-11-15Commit: b73ec89Signed: 2DC28CC7B26A283B ✓
Upstream
huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated
Pinned commit
b73ec897fe872d5e3fea830d516520537decdde6
Manifest
Huihui-gpt-oss-20b-BF16-abliterated.json · .minisig
Manifest sha256
72077728cb5e374e8c2aadf46313992b4a3027ae9c2e573048b7b8e4a007a480
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:42 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated.json $ curl -O https://freeweights.allternit.com/manifests/huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated.json.minisig $ minisign -Vm Huihui-gpt-oss-20b-BF16-abliterated.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

unsloth/gpt-oss-20b-BF16 · this model is a quantization of it

1 model in the catalog name this one as their parent.

Quantizations
1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download huihui-ai/Huihui-gpt-oss-20b-BF16-abliterated
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. Huihui-gpt-oss-20b-BF16-abliterated.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of Huihui-gpt-oss-20b-BF16-abliterated. Each has its own license check and page.

From: xtools-at <huggingface.co/xtools-at>Subject: DeepSeek-V4-Pro-Qwen3.5-9B-UNCENSORED-heretic
From: mlx-community <huggingface.co/mlx-community>Subject: DeepSeek-V4-Pro-Qwen3.5-9B-UNCENSORED-heretic-OptiQ-4bit
From: mlx-community <huggingface.co/mlx-community>Subject: gemma-4-26B-A4B-it-heretic-msq-2.6bit
From: coder3101 <huggingface.co/coder3101>Subject: gemma-4-31B-it-heretic
From: Ilya626 <huggingface.co/Ilya626>Subject: gemma-4-31B-it-SDFT-Heretic-RP
From: llmfan46 <huggingface.co/llmfan46>Subject: gemma-4-31B-it-uncensored-heretic