Textstreamer huggingface Rename, remove, and cast The following methods allow you to modify the columns of a dataset. About AWQ You can also store several generation configurations in a single directory, making use of the config_file_name argument in GenerationConfig. com/hyperonym/basaran. normalization; pre-tokenization; model; post-processing; We’ll see in details what happens during each of those steps in detail, as well as when you want to decode <decoding> some token ids, and how the 🤗 Tokenizers library allows you to A light proxy solution for HuggingFace hub. You can also specify the stopping_strategy. 1 provided by HuggingFace, the following two interfaces are offered for model. You can create a token for free at hf. The company’s aim is to advance NLP and democratize it for use by Ko-Qwen2-7B-Instruct Model Description This model is a Supervised fine-tuned version of Qwen2-7B -Instruct with DeepSpeed and trl for korean. In the transformers 4. save_pretrained(). These files were quantised using hardware kindly provided by Massed Compute. 🤗 transformers is a library maintained by Hugging Face and the community, for state-of-the-art Machine Learning for Pytorch, TensorFlow and JAX. pretrained_model_name (str or os. Your code is rerun each time the state of the app changes. First, we need to import the library. I checked This page lists all the utility functions used by generate (). You can also store several generation configurations in a single directory, making use of the config_file_name argument in GenerationConfig. discussion, stream. After launching the server, you can use the Messages API /v1/chat/completions route and make a POST from transformers import TextStreamer from modelscope import AutoTokenizer from intel_extension_for_transformers. Decoding strategies. IterableDataset. Using 🤗 transformers at Hugging Face. 1, %: being well below 0. The aim is to run the model in GPU poor machines. Hope it meets your needs. I asked for recommendations on Twitter:My friend Peri challenged me to build one in Streamlit! I accepted the challenge. What's the best way to take advantage of the streaming capabilities of hugging face transformers in this library? I see that streaming is all done internally but it's unclear how its exposed to the library user (me) I figured out a few h Why don't you see it for yourself, so get a feeling of assisted generation? Future directions Assisted generation shows that modern text generation strategies are ripe for optimization. from awq import AutoAWQForCausalLM from transformers import AutoTokenizer, TextStreamer model_path = "solidrust/Mistral-7B-Instruct-v0. This is useful if you want to store several generation configurations for a single model (e. We checked our SauerkrautLM-DPO dataset with a special test [1] on a smaller model for this problem. It seems to be working also in Gradio: It seems to be working also in Gradio: from the notebook It says: LangChain provides streaming support for LLMs. end(). This enables showing progressive generations to the user rather than waiting for the whole generation. int8 quantization In the special_tokens_map. g. e the dataset construction is stopped as soon one of the dataset runs out of samples. The default strategy, first_exhausted, is a subsampling strategy, i. import torch from llama_index. ; A path or url to a single saved Upload images, audio, and videos by dragging in the text input, pasting, or clicking here. CyberAgentLM3-22B-Chat (CALM3-22B-Chat) Model Description CyberAgentLM3 is a decoder-only language model pre-trained on 2. Hugging Face is a New York based company that has swiftly developed language processing expertise. from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer model_name_or_path = "TheBloke/claude2-alpaca-7B-AWQ" tokenizer = AutoTokenizer. transformers import AutoModelForCausalLM model_name = "qwen/Qwen-7B" # Modelscope model_id or local model prompt = "Once upon Blog published on Huggingface: Building Cost-Efficient Enterprise RAG applications with Intel Gaudi 2 In this Applied NLP Tutorial, We'll learn how to build a Real-Time Automatic Speech Recognition powered by Facebooks Wav2Vec2 Deep Learning Model. Kind: static class of generation/streamers. ; We use **inputs to supply the key/values in the inputs dictionary as arguments to the generate() function. Evaluating SeamlessStreaming models To reproduce our results, or to evaluate using the same metrics over your own test sets, please check out the from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer from threading import Thread tok = AutoTokenizer. vae_scale_factor) — The height in pixels of the generated video. Here, we’ll show some of the parameters that control the decoding strategies and Chapters 1 to 4 provide an introduction to the main concepts of the 🤗 Transformers library. core import VectorStoreIndex, SimpleDirectoryReader from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer, The generation speed on NPU device is too slow,The first conversation takes about 5 minutes, and it may be faster next. There are many ways to consume Text Generation Inference (TGI) server in your applications. ; 4-Bit Quantized Model Download The model quantized to 4 bits is available for We’re on a journey to advance and democratize artificial intelligence through open source and open science. However, the response will always start by repeating the prompt that was input an follow by the answer. 58 Bits. PathLike) — This can be either:. Streamlit gives users freedom to build a full-featured web app with Python in a reactive way. ; a path to a directory containing a configuration file Consuming Text Generation Inference. Just import light_hf_proxy and no more steps needed. llms. from_pretrained("gpt2") model = AutoModelForCausalLM. huggingface-transformers; streamlit Generated output. to get started generation/streamers. This output is a data structure containing all the information Decoding strategies Certain combinations of the generate() parameters, and ultimately generation_config, can be used to enable specific decoding strategies. shuffle() will randomly select Around 80% of the final dataset is made of the en_dataset, and 20% of the fr_dataset. ; A path to a directory containing vocabulary files required by the tokenizer, for instance saved using the save_pretrained() method, e. json the EOS token should be changed from <|endoftext|> to <|end|> for the model to stop generating correctly. show post in topic. huggingface import HuggingFaceEmbedding from llama_index. 3-AWQ" system_message = "You are Mistral-7B-Instruct-v0. When calling Tokenizer. It has a built in vector store which makes it easy to do any proof of concept without having to install an actual vector database. huggingface. The platform where the machine learning community collaborates on models, datasets, and applications. 0: 390: July 24, 2024 Multi turn chatbot using streamlit open ai and own dataset. embeddings. 3, incarnated as a powerful AI. Subreddit to discuss about Llama, the large language model created by Meta AI. Generating text is the task of generating new text given another text. It is supposed to work with diffusers, transformers and datasets from HuggingFace. I do get response on client for both but only the dict Consuming Text Generation Inference. I have tried using TextStreamer, but it can only output the result to standard output. on_finalized_text(text, stream_end) We’re on a journey to advance and democratize artificial intelligence through open source and open science. 57k • • 284 meta-llama/Llama-3. SQL Server Learn how to leverage SQL Server 2022 with MinIO to run queries on your data without Saved searches Use saved searches to filter your results more quickly Parameters . Simple text streamer that prints the token(s) to stdout as soon as entire words are formed. The HuggingFace team used the same methods [2, 3]. A string, the model id of a predefined tokenizer hosted inside a model repo on huggingface. After you learn the concept in each section, you’ll apply it to build a particular kind of demo, ranging from image classification to speech recognition. Streamlit Spaces. 基础演示 在线试玩 Talk is cheap, Show you the Demo. My speech transcription app was born! 🙌In this hands-on tutorial, I'll teach you how to make a speech to text app using using 🤗 @huggingface, Parameters . Modern Datalakes Learn how modern, multi-engine data lakeshouses depend on MinIO's AIStor. Website Model 🤗 DEMO Github [NEW] Technical Report. If you’re interested in basic LLM usage, our high-level Pipeline interface is a great starting point. These methods are useful for renaming or removing columns and Automatic Embeddings with TEI through Inference Endpoints Migrating from OpenAI to Open LLMs Using TGI's Messages API Advanced RAG on HuggingFace documentation using LangChain Suggestions for Data Saved searches Use saved searches to filter your results more quickly Use streamer feature within huggingface transformer to print out the token as it gets generated. We'll learn Get probability of LLM outputting token sequence This project started as I was hunting for a quality audio transcription app to transcribe audio files. Is there an option to turn I’m working on a service that can stream LLM responses and I want to make it compatible with batch processing. Equinix Repatriate your data onto the Saved searches Use saved searches to filter your results more quickly Parameters . from_pretrained( model_name_or_path, low_cpu_mem_usage= A few things to note in this code. Streaming is an I know TextStreamer has not yet been released, but I was wondering how best one can use it inside a Gradio app. Home ; Categories ; Guidelines ; from huggingface_hub import notebook_login notebook_login() Let’s make our tokenizer and model. @add_end_docstrings (PIPELINE_INIT_ARGS) class TextGenerationPipeline (Pipeline): """ Language generation pipeline using any :obj:`ModelWithLMHead`. Chinese Llama 2 7B 4bit 全部开源,完全可商用的中文版 Llama2 模型及中英文 SFT 数据集,输入格式严格遵循 llama-2-chat 格式,兼容适配所有针对原版 llama-2-chat 模型的优化。. from_pretrained("gpt2") inputs = tok(["An increasing sequence: one,"], return_tensors="pt") streamer = TextIteratorStreamer(tok) # Run the generation in a Parameters . I 作為開源模型界的 GitHub,HuggingFace 自然注意到了這個需求。在 HuggingFace 所提供的 transformers 4. on_finalized_text(text, stream_end) Hi, I successfully use TextIteratorStreamer to stream output using AutoGPTQ transformer. new TextStreamer(tokenizer). SeaLLMs-v3 - Large Language Models for Southeast Asia . datasets. TextStreamer. 6: 1841: August 31, 2024 Issue wth Session State. generate ( ** model_inputs , If you’re interested in basic LLM usage, our high-level Pipeline interface is a great starting point. chat_templates import get_chat_template from unsloth import Fine-tuned DistilRoBERTa-base for Emotion Classification 🤬🤢😀😐😭😲 Model Description DistilRoBERTa-base is a transformer model that performs sentiment analysis. sequences: the generated sequences of tokens; scores (optional): the prediction scores of the language modelling head, for each generation step; hidden_states (optional): the hidden states of the model, for transformers relies on accelerate for multi-GPU inference and the implementation is a kind of naive model parallelism: different GPUs computes different layers of the model. If you are looking to fine-tune a TTS model, the only text-to-speech models currently available in 🤗 Transformers are SpeechT5 and Veeam Learn how MinIO and Veeam have partnered deliver superior RTO and RPO. unet. generate(): 實際上,像 ChatGPT 那樣的串流式(stream)輸出、一次把一段生成的 tokens 吐出,絕對是讓使用者體驗更上一層樓的好方式。 作為開源模型界的 GitHub,HuggingFace 自然注意到了這個需求。 在 HuggingFace 所提供 I made a streaming generation service for Hugging Face transformers that is fully compatible with the OpenAI API: https://github. After launching the server, you can use the Messages API /v1/chat/completions route and make a POST request to get results from the server. Around 80% of the final dataset is made of the en_dataset, and 20% of the fr_dataset. Autoregressive generation with LLMs is also resource-intensive and should be executed on a GPU for adequate throughput. encode_batch, the input text(s) go through the following pipeline:. It provides thousands of pretrained models to Consuming Text Generation Inference. sample_size * self. from the notebook It says: LangChain provides streaming support for LLMs. ; width (int, optional, defaults to self. Here, we’ll show some of the parameters that control the decoding strategies and Transformers. Here, we’ll show some of the parameters that control the decoding strategies and Streaming What is Streaming? Token streaming is the mode in which the server returns the tokens one by one as the model generates them. Below we show you an example of how to use it: # Reuse the code before `model. VLMs are often large and need to be optimized to fit on smaller hardware. . We only provide relay service for the following repos so as to support our The generation_output object is a GreedySearchDecoderOnlyOutput, as we can see in the documentation of that class below, it means it has the following attributes:. from huggingface_hub import notebook_login notebook_login() Let’s make our tokenizer and model. 👉 Watch the stream now by going to the AI WebTV Space. The AI WebTV is an experimental demo to showcase the latest advancements in automatic video and music synthesis. Here, we’ll show some of the parameters that control the decoding strategies and Using HuggingFace with Streamlit. There is a new feature in HuggingFace called TextIteratorStreamer to stream output generated via `mode. It is enabled by the use of device_map="auto" or a customized device_map for multiple GPUs. Equinix Repatriate your data onto the cloud you control with MinIO and Equinix. Parse local and remote GGUF files. Previously I was using the TextIteratorStreamer object to handle the streaming but this is incompatible with batching (ValueError(“TextStreamer only supports batch size 1”) Is there any plans on making this feature compatible with batching, or generation/streamers. , . /my_model_directory/. With this one, I don't see any response in stdout, which is the expectation. For example, you can use the TextStreamer class to stream the output of generate() into your Token streaming is the mode in which the server returns the tokens one by one as the model generates them. PathLike, optional, defaults to from huggingface_hub import InferenceClient endpoint_url = "https://your-endpoint-url-here" prompt = "Tell me about AI" prompt_template= f''' {prompt} # Using the text streamer to stream output one token at a time streamer = TextStreamer(tokenizer, skip_prompt= True, skip_special_tokens= True) OLMo-Bitnet-1B OLMo-Bitnet-1B is a 1B parameter model trained using the method described in The Era of 1-bit LLMs: All Large Language Models are in 1. However, LLMs often require advanced features like quantization and fine control of the token selection step, which is best done through import torch from trl import SFTTrainer from datasets import load_dataset from transformers import TrainingArguments, TextStreamer from unsloth. PathLike) — Can be either:. If not defined, you need to pass prompt_embeds. encode or Tokenizer. Streamlit is also great for data visualization and supports several charting libraries such as Bokeh, Plotly, and Altair. A class containing all functions for auto-regressive text generation, to be used as a mixin in PreTrainedModel. If you use Tensorflow you need to set return_tensors to "tf". This pipeline predicts the words that will follow a specified text prompt. co/settings/tokens Pick the model you want to run. I do get response on client for both but only the dict With following code I see streaming in terminal, but not on web page from langchain import HuggingFacePipeline from langchain import PromptTemplate, LLMChain from transformers import AutoModelForCausalLM, AutoTokenizer, Huggingface Steraming Inference without TGI. We’re asking the tokenizer to give us the word tokens as PyTorch tensors. generate()` in the last code snippet from transformers import TextStreamer streamer = TextStreamer ( tokenizer , skip_prompt = True , skip_special_tokens = True ) generated_ids = model . In my case, I’m trying to Got a solution working, in generate() for the different types of sampling for example greedy_search() there is a next_token variable you can incrementally get the subsequent tokens generated by the model as soon as Fit models in smaller hardware. greedy decoding by calling greedy_search() if num_beams=1 and do_sample=False. We can use other arguments also. from_pretrained(model_name_or_path) model = AutoModelForCausalLM. app. For more information on how to convert your PyTorch, TensorFlow, or JAX model to ONNX, see the conversion section. ; beam-search decoding by calling Streaming mode for model chat is simple with the help of TextStreamer. Requirements transformers >= 4. As more code generation models become publicly available, it is now possible to do text-to-web and even text-to-app in ways that we couldn't imagine before. If you are using a mobile device, you can view Saved searches Use saved searches to filter your results more quickly Shuffle Like a regular datasets. Let’s say your dataset has one million examples, and you set the buffer_size to ten thousand. @lhoestq Pipelines The pipelines are a great and easy way to use models for inference. vae_scale_factor) — The AI community building the future. In this blog post we will walk you through hosting models and datasets and serving your Streamlit applications in Hugging Face Spaces. config. Transformers supports many model quantization libraries, and here we will only show int8 quantization with Quanto. generation/streamers. The buffer_size argument controls the size of the buffer to randomly sample examples from. The pipeline() function is a great way to quickly use a pretrained model for inference, as it takes care of all Introduction Llamaindex is a framework to run RAG against an LLM. The class exposes generate(), which can be used for:. ; a path to a directory containing a configuration file saved using the save_pretrained() method, e. We’re on a journey to advance and democratize artificial intelligence through open source and open science. on_finalized_text(text, stream_end) Streaming What is Streaming? Token streaming is the mode in which the server returns the tokens one by one as the model generates them. put(value). We have now an example for a new iterator of TextStreamer. ; config_file_name (str or os. May I ask if there is any error? Below is my code demo import torch import torch_npu from The AI WebTV is an experimental demo to showcase the latest advancements in automatic video and music synthesis. 9, indicate that our dataset is free from CyberAgentLM2-7B-Chat (CALM2-7B-Chat) Model Description CyberAgentLM2-Chat is a fine-tuned model of CyberAgentLM2 for dialogue use cases. Currently, we support streaming for the OpenAI, ChatOpenAI. You were created by mistralai. These pipelines are objects that abstract most of the complex code from the library, offering a simple API dedicated to several tasks, including Named Entity Recognition, Masked Language Modeling, Sentiment Analysis, Feature Extraction and Question Answering. Certain combinations of the generate() parameters, and ultimately generation_config, can be used to enable specific decoding strategies. Our results, with result < 0. and Anthropic implementations, but streaming support for other LLM implementations is on the roadmap. from_pretrained(). We only provide relay service for the following repos so as to support our Shuffle Like a regular datasets. 1-8B The tokenization pipeline. This is useful for applications that benefit from acessing the generated text TextStreamer. If any one can provide a notebook so this will be very helpful. generate(): TextStreamer: Directly prints the model-generated response to standard output (stdout) There is a new feature in HuggingFace called TextIteratorStreamer to stream output generated via `mode. Modified 1 year, 1 month ago. This language generation pipeline can currently be loaded from :func:`~transformers. Text Generation • Updated 4 days ago • 9. This supplies the mask and padding values in addition to the actual word tokens to the function. In my case, I’m trying to send the stream output to the frontend, similar to how it works in ChatGPT. py · joaogante/transformers_streaming at main. We introduce SeaLLMs-v3, the latest series of the SeaLLMs (Large Language Models for Southeast Asian languages) family. prompt (str or List[str], optional) — The prompt or prompts to guide image generation. Previously I was using the TextIteratorStreamer object to handle the streaming but this is incompatible with Writing Partner Mistral 7B - AWQ Model creator: FPHam Original model: Writing Partner Mistral 7B Description This repo contains AWQ model files for FPHam's Writing Partner Mistral 7B. IterableDataset with datasets. Using Streamlit. You can later instantiate them with GenerationConfig. a string, the model id of a pretrained model configuration hosted inside a model repo on huggingface. The pipelines are a great and easy way to use models for inference. one for creative text generation with sampling, and one We have now an example for a new iterator of TextStreamer . 0 trillion tokens from scratch. I read that I might need to use TextIteratorStreamer to make it work. It achieves state-of-the-art performance among models with similar sizes, excelling across a diverse array of tasks such as world knowledge, HuggingFace Tokenizers. pretrained_model_name_or_path (str or os. shuffle() will randomly select mistralai/Mistral-Small-Instruct-2409. I was wondering if there is another way to stream the output of the model. It seems to be working also in Gradio: It seems to be working also in Gradio: Streamlit App Faster Model Loading - Hugging Face Forums Loading The evaluation data ids for FLEURS, CoVoST2 and CVSS-C can be found here. js supports loading any model hosted on the Hugging Face Hub, provided it has ONNX weights (located in a subfolder called onnx). A light proxy solution for HuggingFace hub. 30. Try now at https: del inputs["token_type_ids"] streamer = Here, create_repo creates a gradio repo with the target name under a specific account using that account's Write Token. Ask Question Asked 1 year, 1 month ago. As a top-ranked model on the HuggingFace Open LLM leaderboard, and a fine tune of Llama 2, Solar is a great example of the progress enabled by open source. core import Settings from llama_index. In practice, you can craft your own streaming class for all sorts of purposes! We also have basic streaming classes ready for you to use. ; beam-search decoding by calling A few things to note in this code. prompt = "I am using transformers text-generation pipeline from Hugging Face library to generate" pprint(gen(prompt,num_return_sequences = 3, max Parameters . Join the Hugging Face community. Demo 地址 / HuggingFace Spaces If I use TextStreamer obj from huggingface, I can see the stream in stdout. prompt = "I am using transformers text-generation pipeline from Hugging Face library to generate" pprint(gen(prompt,num_return_sequences = 3, max I can load dataset with streaming mode, but I am confused, how to prepare for training to iteratively train the model on whole dataset. By the end of this part of the course, you will be familiar with how Transformer models work and will know how to use a model from the Hugging Face Hub, fine-tune it on a dataset, and share your results on the Hub!; Chapters 5 to 8 teach the basics of 🤗 Datasets and 🤗 Tokenizers before diving We’re on a journey to advance and democratize artificial intelligence through open source and open science. Parameters . I I’m working on a service that can stream LLM responses and I want to make it compatible with batch processing. Pipelines. The output of generate () is an instance of a subclass of ModelOutput. In this article we will learn how to use Llamaindex to do RAG with a model from Hugging Face. Finally upload_file uploads a file inside the repo with the This chapter is broken down into sections which include both concepts and applications. These models can, for example, fill in incomplete text or paraphrase. You can also pass "stream": true to the call if you want TGI to return a stream of tokens. 1; accelerate As the GitHub of the open-source model community, HuggingFace naturally recognized this demand. the 2 I’ll demonstrate are the TextStreamer and the TextIteratorStreamer, which should cover Pipelines The pipelines are a great and easy way to use models for inference. For more examples on what Bark and other pretrained TTS models can do, refer to our Audio course. Learn about Text Generation using Machine Learning. There is no need for an excessive amount of training data that spans countless hours. Dataset object, you can also shuffle a datasets. ; Enhanced Understanding: Mistral-7B is specifically trained to grasp and generate Italian text, ensuring high linguistic and contextual accuracy. It was trained on the first 60B tokens of the Dolma dataset, so it is Unique Features for Italian Tailored Vocabulary: The model's vocabulary is fine-tuned to encompass the nuances and diversity of the Italian language. Pipelines The pipelines are a great and easy way to use models for inference. Decoding strategies Certain combinations of the generate() parameters, and ultimately generation_config, can be used to enable specific decoding strategies. Showcase your Datasets and Models using Streamlit on Hugging Face Spaces Streamlit allows you to visualize datasets and build demos of Machine Learning models in a neat way. 1 中,提供了以下兩種接口給 model. one for creative text generation with sampling, and one generation/streamers. Concept Parameters . If you are new to this concept, we recommend reading this blog post that illustrates how common decoding strategies work. " If I use TextStreamer obj from huggingface, I can see the stream in stdout. from awq import AutoAWQForCausalLM from transformers import AutoTokenizer, TextStreamer, A class containing all functions for auto-regressive text generation, to be used as a mixin in PreTrainedModel. ; height (int, optional, defaults to self. We’re on a journey to advance class AsyncTextIteratorStreamer(TextStreamer): Streamer that stores print-ready text in a queue, to be used by a downstream application as an async iterator. With following code I see streaming in terminal, but not on web page from langchain import HuggingFacePipeline from langchain import PromptTemplate, LLMChain from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer, pip Huggingface Steraming Inference without TGI. 34. You can specify stopping_strategy=all_exhausted to execute an oversampling strategy. the 2 I’ll demonstrate are the TextStreamer and the TextIteratorStreamer, which should cover Some models on the HuggingFace leaderboard had problems with wrong data getting mixed in. language: en tags: - text-generation - causal-lm - fine-tuning - unsupervised Model Name: olabs-ai/reflection_model Model Description @huggingface/gguf. However, LLMs often require advanced features like quantization and fine control of the token selection step, which is best done through generate(). repo_name gets the full repo name of the related repo. As the GitHub of the open-source model community, HuggingFace naturally recognized this demand. However, I’m having trouble using a GPU in a docker container. ; multinomial sampling by calling sample() if num_beams=1 and do_sample=True. shuffle(). and get access to the augmented documentation experience Collaborate on models, datasets and Spaces Faster examples with accelerated inference Switch between documentation themes Sign Up. pipeline` using the following task identifier: :obj:`"text Jais-7b-chat (Its a double quantized version) This model is the double quantized version of jais-13b-chat by core42. However, this kind of implementation is not efficient as for a single request, only one GPU computes at the same ⓍTTS ⓍTTS is a Voice generation model that lets you clone voices into different languages by using just a quick 6-second audio clip. For the first way to stream, we will use the TextStreamer from the Transformer library. huggingface import HuggingFaceLLM from llama_index. Trained Data Trained with public data and private data and Generated data (about 50k). PathLike, optional, defaults to Veeam Learn how MinIO and Veeam have partnered deliver superior RTO and RPO. co. generate(): TextStreamer: 能夠直接在標準輸出(stdout)中印出模型生成的回覆 I found this tutorial for using TGI (Text Generation Inference) with the docker image at Text Generation Inference. If you are using a mobile device, you can view the stream from the Twitch mirror. Streaming text generation demo with @huggingface/inference First, input your token if you have one! Otherwise, you may encounter rate limiting. session-state Around 80% of the final dataset is made of the en_dataset, and 20% of the fr_dataset. generate() to either stdout or as an iterator. gckmvm rmngm rppch ymcj hcpkir sbaul vdvde tmmhm nsqcx byufk