|
|
--- |
|
|
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-страницу с текстом "Привет, мир!". |