Token Classification
MLX
openmed
openai_privacy_filter
apple-silicon
pii
privacy
de-identification
redaction
quantized
int8
q8
medical
clinical
Instructions to use OpenMed/privacy-filter-mlx-8bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use OpenMed/privacy-filter-mlx-8bit with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir privacy-filter-mlx-8bit OpenMed/privacy-filter-mlx-8bit
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
| license: apache-2.0 | |
| base_model: openai/privacy-filter | |
| pipeline_tag: token-classification | |
| library_name: openmed | |
| tags: | |
| - openmed | |
| - mlx | |
| - apple-silicon | |
| - token-classification | |
| - pii | |
| - privacy | |
| - de-identification | |
| - redaction | |
| - quantized | |
| - int8 | |
| - q8 | |
| - medical | |
| - clinical | |
| # OpenAI Privacy Filter MLX 8-bit | |
| This repository contains an 8-bit OpenMed MLX artifact for [`openai/privacy-filter`](https://huggingface.co/openai/privacy-filter), packaged for local PII detection on Apple Silicon with [OpenMed](https://github.com/maziyarpanahi/openmed). | |
| OpenAI Privacy Filter is a bidirectional token-classification model for detecting personally identifiable information in text. This OpenMed MLX build keeps the original BIOES token-label head, uses the `o200k_base` tokenizer assets, and runs with OpenMed's Python and Swift MLX runtimes. | |
| After the model is downloaded once, inference runs locally. No document text is sent to a server. | |
| ## Model Details | |
| - Source checkpoint: [`openai/privacy-filter`](https://huggingface.co/openai/privacy-filter) | |
| - OpenMed MLX family: `openai-privacy-filter` | |
| - Task: token classification for privacy span detection | |
| - Weight format: `weights.safetensors` | |
| - Quantization: 8-bit affine quantization, group size 64 | |
| - Runtime: OpenMed + MLX on Apple Silicon | |
| - Tokenizer: `o200k_base` / tiktoken-style BPE | |
| - Labels: `account_number`, `private_address`, `private_date`, `private_email`, `private_person`, `private_phone`, `private_url`, `secret` | |
| This artifact uses expert-aware MLX quantization: embeddings, attention projections, MoE gates, sparse-MoE expert tensors, and the token-classification head are all stored in 8-bit packed form. The resulting `weights.safetensors` file is about 1.39 GiB, compared with about 2.61 GiB for the BF16 OpenMed MLX artifact. | |
| ## Quick Start: Python | |
| ```bash | |
| pip install -U openmed "openmed[mlx]" | |
| ``` | |
| ```python | |
| from huggingface_hub import snapshot_download | |
| from openmed.mlx.inference import create_mlx_pipeline | |
| model_path = snapshot_download("OpenMed/privacy-filter-mlx-8bit") | |
| pipe = create_mlx_pipeline(model_path) | |
| text = "My name is Alice Smith and my email is alice.smith@example.com." | |
| entities = pipe(text) | |
| for entity in entities: | |
| print(entity) | |
| ``` | |
| Example output: | |
| ```python | |
| { | |
| "entity_group": "private_person", | |
| "word": "Alice Smith", | |
| "start": 11, | |
| "end": 22, | |
| "score": 0.9999, | |
| } | |
| { | |
| "entity_group": "private_email", | |
| "word": "alice.smith@example.com", | |
| "start": 39, | |
| "end": 62, | |
| "score": 0.9998, | |
| } | |
| ``` | |
| ## Quick Start: Swift and Apple Apps | |
| Add OpenMedKit to your Xcode project: | |
| 1. Open Xcode and choose File > Add Package Dependencies. | |
| 2. Paste `https://github.com/maziyarpanahi/openmed`. | |
| 3. Select the `OpenMedKit` package product. | |
| 4. Download and cache the MLX model once, then run inference locally. | |
| ```swift | |
| import OpenMedKit | |
| let modelURL = try await OpenMedModelStore.downloadMLXModel( | |
| repoID: "OpenMed/privacy-filter-mlx-8bit" | |
| ) | |
| let openmed = try OpenMed(backend: .mlx(modelDirectoryURL: modelURL)) | |
| let entities = try openmed.extractPII( | |
| "My name is Alice Smith and my email is alice.smith@example.com." | |
| ) | |
| for entity in entities { | |
| print(entity.text, entity.label, entity.score) | |
| } | |
| ``` | |
| For iOS, run on Apple Silicon hardware. The iOS Simulator is not the recommended acceptance target for MLX inference. | |
| ## Validation | |
| The 8-bit artifact was validated against the unquantized OpenMed MLX artifact with fixed text samples. BF16 and Q8 returned identical grouped spans for person, date, phone, email, address, and account-number examples. | |
| OpenMed also includes unit tests for: | |
| - q8 artifact loading | |
| - quantization metadata decoding | |
| - expert tensor packing and `.scales` coverage | |
| - finite logits from the q8 runtime | |
| - bf16/q8 shape and argmax-label coherence | |
| - BIOES/Viterbi span decoding | |
| ## Intended Use | |
| Use this model for local privacy filtering, PII detection, redaction workflows, and evaluation on Apple devices. For high-risk domains such as healthcare, legal, finance, education, and government, evaluate against your own data and policy requirements before production use. | |
| ## Credits | |
| - Base checkpoint: [`openai/privacy-filter`](https://huggingface.co/openai/privacy-filter) | |
| - MLX conversion and runtime support: [OpenMed](https://github.com/maziyarpanahi/openmed) | |
| - OpenMed website: [https://openmed.life](https://openmed.life) | |