Локальные LLM в марте 2026
Mar. 13th, 2026 09:44 pmПоскольку у меня вот уже много лет крутится домашний сервер на Raspberry Pi 400 со всякими нужными, но мелкими вещами, я решил запустить на нем локальный LLM.
С точки зрения ресурсов, последний QWEN 3.5 с 2B параметрами запускается через llama.cpp превосходно из ящика в 4-битовой квантизации, в рабочем состоянии использует около 2 ГБ памяти (это и внутренние параметры, и 8-битовый KV-кэш, и история, ну и сама оболочка).
С точки зрения использования, позапрошлая модель QWEN меня уверяла разными историческими доводами, что Мадрид - столица Франции, так что я решил пробовать более технические вопросы, а именно, написать код на С, реверсирующий односвязанный список.
Процесс думания прошел отлично, когда дошли собственно до кода, то:
typedef struct Node {
int data;
struct Node* next;
} Node;
Хорошо, конечно, но пока stdio не особо нужен.
Потом оно сгенерировало кучу функций "создать ноду", "добавить ноду в начало списка", "добавить ноду в конец списка", "напечатать список", ну и
// Reverse the linked list
void reverseList(Node* head) {
Node* prev = NULL;
Node* current = head;
while (current != NULL) {
Node* temp = current; // Store current pointer
current->next = prev; // Point current to previous
prev = current; // Move prev to current
current = temp->next; // Move temp to next
}
head = prev; // Update head to the new first node
}
потом показало мне, как ситуация до и после на небольшом конкретном списке и пояснило сложность - ну в точности, как соискатель заученно следует по всем пунктам интервью.
Потом оно предложило переписать как
void reverseListIterative(Node* head) {
Node* prev = NULL;
Node* current = head;
Node* nextNode = NULL;
while (current != NULL) {
nextNode = current->next;
current->next = prev;
prev = current;
current = nextNode;
}
head = prev;
}
ну а напоследок начало заниматься улучшайзингом:
void reverseList(Node* head) {
Node* prev = NULL;
Node* current = head;
Node* nextNode = NULL;
while (current != NULL) {
nextNode = current->next;
current->next = NULL;
prev = current;
current = nextNode;
}
head = prev;
}
Спасибо, что хотя бы начало отдали обратно!
С точки зрения ресурсов, последний QWEN 3.5 с 2B параметрами запускается через llama.cpp превосходно из ящика в 4-битовой квантизации, в рабочем состоянии использует около 2 ГБ памяти (это и внутренние параметры, и 8-битовый KV-кэш, и история, ну и сама оболочка).
С точки зрения использования, позапрошлая модель QWEN меня уверяла разными историческими доводами, что Мадрид - столица Франции, так что я решил пробовать более технические вопросы, а именно, написать код на С, реверсирующий односвязанный список.
Процесс думания прошел отлично, когда дошли собственно до кода, то:
typedef struct Node {
int data;
struct Node* next;
} Node;
Потом оно сгенерировало кучу функций "создать ноду", "добавить ноду в начало списка", "добавить ноду в конец списка", "напечатать список", ну и
// Reverse the linked list
void reverseList(Node* head) {
Node* prev = NULL;
Node* current = head;
while (current != NULL) {
Node* temp = current; // Store current pointer
current->next = prev; // Point current to previous
prev = current; // Move prev to current
current = temp->next; // Move temp to next
}
head = prev; // Update head to the new first node
}
потом показало мне, как ситуация до и после на небольшом конкретном списке и пояснило сложность - ну в точности, как соискатель заученно следует по всем пунктам интервью.
Потом оно предложило переписать как
void reverseListIterative(Node* head) {
Node* prev = NULL;
Node* current = head;
Node* nextNode = NULL;
while (current != NULL) {
nextNode = current->next;
current->next = prev;
prev = current;
current = nextNode;
}
head = prev;
}
ну а напоследок начало заниматься улучшайзингом:
void reverseList(Node* head) {
Node* prev = NULL;
Node* current = head;
Node* nextNode = NULL;
while (current != NULL) {
nextNode = current->next;
current->next = NULL;
prev = current;
current = nextNode;
}
head = prev;
}
Спасибо, что хотя бы начало отдали обратно!