Kodify-Nano / README.md
Polushinm's picture
Update README.md
ac63253 verified
---
library_name: transformers
language:
- ru
- en
pipeline_tag: text-generation
license: apache-2.0
license_name: apache-2.0
license_link: https://huggingface.co/MTSAIR/Kodify-Nano/blob/main/Apache%20License%20MTS%20AI.docx
---
# Kodify-Nano 🤖
Kodify-Nano – это легковесная LLM, разработанная для выполнения задач разработки кода с минимальными ресурсами. Она оптимизирована для быстрого и эффективного взаимодействия с пользователями, обеспечивая высокую производительность даже в условиях ограниченных ресурсов.
Kodify-Nano is a lightweight LLM designed for code development tasks with minimal resource usage. It is optimized for fast and efficient interaction, delivering high performance even in resource-constrained environments.
## Inference with vLLM
```bash
python3 -m vllm.entrypoints.openai.api_server --model MTSAIR/Kodify-Nano --port 8985
```
> **Important!** If you encounter the **"CUDA out of memory. Tried to allocate..."** error despite having sufficient GPU memory, try one of these solutions:
> 1. Add the --enforce-eager argument
> 2. Reduce GPU memory utilization (for example --gpu-memory-utilization 0.8)
>
> Note: This may decrease model performance.
---
## Using the Ollama Image
You can run Kodify Nano on OLLAMA in two ways:
1. **Using Docker**
2. **Locally** (provides faster responses than Docker)
### Method 1: Running Kodify Nano on OLLAMA in Docker
#### Without NVIDIA GPU:
```bash
docker run -e OLLAMA_HOST=0.0.0.0:8985 -p 8985:8985 --name ollama -d ollama/ollama
```
#### With NVIDIA GPU:
```bash
docker run --runtime nvidia -e OLLAMA_HOST=0.0.0.0:8985 -p 8985:8985 --name ollama -d ollama/ollama
```
> **Important:**
> - Ensure Docker is installed and running
> - If port 8985 is occupied, replace it with any available port and update plugin configuration
#### Load the model:
```bash
docker exec ollama ollama pull hf.co/MTSAIR/Kodify-Nano-GGUF
```
#### Rename the model:
```bash
docker exec ollama ollama cp hf.co/MTSAIR/Kodify-Nano-GGUF kodify_nano
```
#### Start the model:
```bash
docker exec ollama ollama run kodify_nano
```
---
### Method 2: Local Kodify Nano on OLLAMA
1. **Download OLLAMA:**
https://ollama.com/download
2. **Set the port:**
```bash
export OLLAMA_HOST=0.0.0.0:8985
```
> **Note:** If port 8985 is occupied, replace it and update plugin configuration
3. **Start OLLAMA server:**
```bash
ollama serve &
```
4. **Download the model:**
```bash
ollama pull hf.co/MTSAIR/Kodify-Nano-GGUF
```
5. **Rename the model:**
```bash
ollama cp hf.co/MTSAIR/Kodify-Nano-GGUF kodify_nano
```
6. **Run the model:**
```bash
ollama run kodify_nano
```
## Plugin Installation
### For Visual Studio Code
1. Download the [latest Kodify plugin](https://mts.ai/ru/product/kodify/?utm_source=huggingface&utm_medium=pr&utm_campaign=post#models) for VS Code.
2. Open the **Extensions** panel on the left sidebar.
3. Click **Install from VSIX...** and select the downloaded plugin file.
### For JetBrains IDEs
1. Download the [latest Kodify plugin](https://mts.ai/ru/product/kodify/?utm_source=huggingface&utm_medium=pr&utm_campaign=post#models) for JetBrains.
2. Open the IDE and go to **Settings > Plugins**.
3. Click the gear icon (⚙️) and select **Install Plugin from Disk...**.
4. Choose the downloaded plugin file.
5. Restart the IDE when prompted.
---
### Changing the Port in Plugin Settings (for Visual Studio Code and JetBrains)
If you changed the Docker port from `8985`, update the plugin's `config.json`:
1. Open any file in the IDE.
2. Open the Kodify sidebar:
- **VS Code**: `Ctrl+L` (`Cmd+L` on Mac).
- **JetBrains**: `Ctrl+J` (`Cmd+J` on Mac).
3. Access the `config.json` file:
- **Method 1**: Click **Open Settings** (VS Code) or **Kodify Config** (JetBrains), then navigate to **Configuration > Chat Settings > Open Config File**.
- **Method 2**: Click the gear icon (⚙️) in the Kodify sidebar.
4. Modify the `apiBase` port under `tabAutocompleteModel` and `models`.
5. Save the file (`Ctrl+S` or **File > Save**).
---
### Example API Request
```python
import openai
openai.api_key = 'xxx' # Replace with your key
openai.api_base = 'http://localhost:8985/v1' # Update if port changed
response = openai.ChatCompletion.create(
model="MTSAIR/Kodify-Nano",
temperature=0.4,
max_tokens=2048,
top_p=0.8,
messages=[
{"role": "user", "content": "Write a Python algorithm to find all unique words in a text."}
]
)
print(response["choices"][0]["message"]["content"])
### Inference with Hugging Face
from transformers import pipeline
pipe = pipeline("text-generation", model="MTSAIR/Kodify-Nano", device="cuda")
messages = [
{"role": "user", "content": "Write a Python algorithm to find all unique words in a text."},
]
response = pipe(messages, max_length=1024)
print(response[0]['generated_text'][-1]['content'])
```
---
## Example Interaction
**User Request:**
*Напиши простой сервер на flask с объяснениями на русском языке.*
#### Kodify-Nano response:
>Конечно! Давайте создадим простой сервер на Flask с объяснениями на русском языке. Flask - это мини-модуль для создания веб-приложений на Python, который позволяет быстро и легко разрабатывать приложения с использованием библиотеки Werkzeug.
>### Установка Flask
>Для начала, убедитесь, что у вас установлен Python. После этого установите Flask с помощью pip:
>```sh
>pip install Flask
>```
>### Пример простого сервера на Flask
>Вот пример простого приложения на Flask, которое будет отвечать на запросы на `/hello` и выводить "Hello, World!".
>1. Создайте новый файл, например, `app.py`.
>2. Откройте файл в текстовом редакторе и вставьте следующий код:
>```python
>from flask import Flask
>app = Flask(__name__)
>@app.route('/hello')
>def hello_world():
> return 'Hello, World!'
>if __name__ == '__main__':
> app.run(debug=True)
>```
>### Объяснение кода
>1. **Импорт Flask**: Мы импортируем класс Flask из модуля `flask`.
>2. **Создание экземпляра Flask**: Создаем экземпляр класса Flask с именем `app`.
>3. **Обработчик запросов**: Мы декорируем функцию `hello_world` с помощью `@app.route('/hello')`. Это означает, что при запросе на `/hello` Flask вызовет функцию `hello_world`.
>4. **Возвращение ответа**: Функция `hello_world` возвращает строку `'Hello, World!'`.
>5. **Запуск сервера**: В конце файла добавляем проверку, чтобы при запуске скрипта он запускался в режиме отладки (`debug=True`).
>### Запуск сервера
>1. Откройте терминал и перейдите в директорию, в которой находится ваш файл `app.py`.
>2. Запустите скрипт с помощью команды:
>```sh
>python app.py
>```
>
>3. Вы увидите сообщение, что сервер запущен на порту 5000. Например:
>```
> * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
>```
>4. Откройте браузер и перейдите на адрес `http://127.0.0.1:5000/hello`. Вы должны увидеть сообщение "Hello, World!".
>### Дополнительные функции
>Flask предоставляет множество других функций для создания более сложных приложений. Вот некоторые из них:
>- **Функции маршрутизации**: Вы можете добавлять дополнительные маршруты, обрабатывать параметры запросов и т.д.
>- **Вьюшки**: Вы можете создавать вьюшки, которые возвращают HTML-страницы.
>- **Сессии**: Вы можете использовать сессии для хранения данных между запросами.
>- **БД**: Вы можете подключаться к базе данных и выполнять запросы.
>Давайте рассмотрим пример с вьюшкой:
>```python
>from flask import Flask, render_template
>app = Flask(__name__)
>@app.route('/')
>def index():
> return render_template('index.html')
>if __name__ == '__main__':
> app.run(debug=True)
>```
>1. **Вьюшка**: Создаем файл `templates/index.html` в папке `templates` (если он еще не существует) и добавляем следующий код:
>
>```html
><!DOCTYPE html>
><html lang="ru">
><head>
> <meta charset="UTF-8">
> <title>Пример вьюшки</title>
></head>
><body>
> <h1>Привет, мир!</h1>
> <p>Это пример вьюшки на Flask.</p>
></body>
></html>
>```
>2. **Запуск сервера**: Сохраните файлы и запустите сервер снова. Откройте браузер и перейдите на адрес `http://127.0.0.1:5000/`. Вы должны увидеть HTML-страницу с текстом "Привет, мир!".