Views
No views yet
| File path | Size |
|---|---|
| model.safetensors | 4.1MB |
1import torch
2from transformers import AutoModelForTokenClassification, AutoTokenizer
3
4model_id = "tiny-random/openai-privacy-filter"
5device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
6tokenizer = AutoTokenizer.from_pretrained(model_id)
7model = AutoModelForTokenClassification.from_pretrained(
8 model_id,
9 dtype=torch.bfloat16,
10).to(device)
11text = ''
12for i in range(10):
13 text += f'Contact me at test{i}@example.com or call 555-0000-{i}. '
14enc = tokenizer(text, return_tensors='pt').to(device)
15with torch.no_grad():
16 outputs = model(**enc)
17predicted_token_class_ids = outputs.logits.argmax(dim=-1)
18predicted_token_classes = [model.config.id2label[token_id.item()] for token_id in predicted_token_class_ids[0]]
19print(predicted_token_classes, len(predicted_token_classes))1# Generated by AI.
2import json
3from pathlib import Path
4
5import torch
6from huggingface_hub import hf_hub_download
7from transformers import (
8 AutoConfig,
9 AutoModelForTokenClassification,
10 AutoTokenizer,
11 set_seed,
12)
13
14source_model_id = "openai/privacy-filter"
15save_folder = "/tmp/tiny-random/openai-privacy-filter"
16
17Path(save_folder).mkdir(parents=True, exist_ok=True)
18for filename in (
19 'tokenizer.json',
20 'tokenizer_config.json',
21 'viterbi_calibration.json',
22):
23 hf_hub_download(
24 repo_id=source_model_id,
25 filename=filename,
26 repo_type='model',
27 local_dir=save_folder,
28 )
29
30with open(
31 hf_hub_download(source_model_id, filename='config.json', repo_type='model'),
32 'r',
33 encoding='utf-8',
34) as f:
35 config_json: dict = json.load(f)
36
37config_json.update({
38 'num_hidden_layers': 4,
39 'hidden_size': 8,
40 'intermediate_size': 32,
41 'num_attention_heads': 8,
42 'num_key_value_heads': 4,
43 'head_dim': 32,
44})
45config_json.pop('transformers.js_config', None)
46
47with open(f'{save_folder}/config.json', 'w', encoding='utf-8') as f:
48 json.dump(config_json, f, indent=2)
49
50config = AutoConfig.from_pretrained(save_folder)
51print(config)
52torch.set_default_dtype(torch.bfloat16)
53model = AutoModelForTokenClassification.from_config(config, trust_remote_code=True)
54torch.set_default_dtype(torch.float32)
55
56model = model.cpu()
57set_seed(42)
58with torch.no_grad():
59 for name, p in sorted(model.named_parameters()):
60 torch.nn.init.normal_(p, mean=0.0, std=0.8)
61 print(name, tuple(p.shape))
62for i in range(model.config.num_hidden_layers):
63 model.model.layers[i].self_attn.sinks = torch.nn.Parameter(model.model.layers[i].self_attn.sinks.float())
64model.save_pretrained(save_folder)
65print(model)1OpenAIPrivacyFilterForTokenClassification(
2 (model): OpenAIPrivacyFilterModel(
3 (embed_tokens): Embedding(200064, 8, padding_idx=199999)
4 (layers): ModuleList(
5 (0-3): 4 x OpenAIPrivacyFilterEncoderLayer(
6 (self_attn): OpenAIPrivacyFilterAttention(
7 (q_proj): Linear(in_features=8, out_features=256, bias=True)
8 (k_proj): Linear(in_features=8, out_features=128, bias=True)
9 (v_proj): Linear(in_features=8, out_features=128, bias=True)
10 (o_proj): Linear(in_features=256, out_features=8, bias=True)
11 )
12 (mlp): OpenAIPrivacyFilterMLP(
13 (router): OpenAIPrivacyFilterTopKRouter()
14 (experts): OpenAIPrivacyFilterExperts()
15 )
16 (input_layernorm): OpenAIPrivacyFilterRMSNorm((8,), eps=1e-05)
17 (post_attention_layernorm): OpenAIPrivacyFilterRMSNorm((8,), eps=1e-05)
18 )
19 )
20 (norm): OpenAIPrivacyFilterRMSNorm((8,), eps=1e-05)
21 (rotary_emb): OpenAIPrivacyFilterRotaryEmbedding()
22 )
23 (dropout): Dropout(p=0.0, inplace=False)
24 (score): Linear(in_features=8, out_features=33, bias=True)
25)