huihui-ai's picture
Update README.md
df976f2 verified
metadata
license: mit
license_link: >-
  https://huggingface.co./huihui-ai/Phi-4-multimodal-instruct-abliterated/resolve/main/LICENSE
language:
  - multilingual
  - ar
  - zh
  - cs
  - da
  - nl
  - en
  - fi
  - fr
  - de
  - he
  - hu
  - it
  - ja
  - ko
  - 'no'
  - pl
  - pt
  - ru
  - es
  - sv
  - th
  - tr
  - uk
tags:
  - nlp
  - code
  - audio
  - automatic-speech-recognition
  - speech-summarization
  - speech-translation
  - visual-question-answering
  - phi-4-multimodal
  - phi
  - phi-4-mini
  - abliterated
  - uncensored
widget:
  - example_title: Librispeech sample 1
    src: https://cdn-media.huggingface.co/speech_samples/sample1.flac
  - example_title: Librispeech sample 2
    src: https://cdn-media.huggingface.co/speech_samples/sample2.flac
  - messages:
      - role: user
        content: Can you provide ways to eat combinations of bananas and dragonfruits?
library_name: transformers
base_model:
  - microsoft/Phi-4-multimodal-instruct

huihui-ai/Phi-4-multimodal-instruct-abliterated

This is an uncensored version of microsoft/Phi-4-multimodal-instruct created with abliteration (see remove-refusals-with-transformers to know more about it).
This is a crude, proof-of-concept implementation to remove refusals from an LLM model without using TransformerLens.

It was only the text part that was processed, not the image part.

The abliterated model will no longer say "I'm sorry, but I cannot provide details or descriptions of images"

Usage

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

import os
import requests
import torch
from PIL import Image
import soundfile
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfig

model_path = 'huihui-ai/Phi-4-multimodal-instruct-abliterated'

kwargs = {}
kwargs['torch_dtype'] = torch.bfloat16

processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
print(processor.tokenizer)

model = AutoModelForCausalLM.from_pretrained(
    model_path,
    trust_remote_code=True,
    torch_dtype='auto',
    _attn_implementation='flash_attention_2',
).cuda()
print("model.config._attn_implementation:", model.config._attn_implementation)

generation_config = GenerationConfig.from_pretrained(model_path, 'generation_config.json')

user_prompt = '<|user|>'
assistant_prompt = '<|assistant|>'
prompt_suffix = '<|end|>'
 
#################################################### text-only ####################################################
prompt = f'{user_prompt}what is the answer for 1+1? Explain it.{prompt_suffix}{assistant_prompt}'
print(f'>>> Prompt\n{prompt}')
inputs = processor(prompt, images=None, return_tensors='pt').to('cuda:0')

generate_ids = model.generate(
    **inputs,
    max_new_tokens=1000,
    generation_config=generation_config,
)
generate_ids = generate_ids[:, inputs['input_ids'].shape[1] :]
response = processor.batch_decode(
    generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]

print(f'>>> Response\n{response}')

Donation

If you like it, please click 'like' and follow us for more updates.
You can follow x.com/support_huihui to get the latest model information from huihui.ai.

Your donation helps us continue our further development and improvement, a cup of coffee can do it.
  • bitcoin:
  bc1qqnkhuchxw0zqjh2ku3lu4hq45hc6gy84uk70ge