|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Articles d’actualité sur les crypto-monnaies
llama.cpp: Writing A Simple C++ Inference Program for GGUF LLM Models
Jan 14, 2025 at 03:04 am

This tutorial will guide you through the process of building a simple C++ program that performs inference on GGUF LLM models using the llama.cpp framework. We will cover the essential steps involved in loading the model, performing inference, and displaying the results. The code for this tutorial can be found here.
Prerequisites
To follow along with this tutorial, you will need the following:
A Linux-based operating system (native or WSL)
CMake installed
GNU/clang toolchain installed
Step 1: Setting Up the Project
Let's start by setting up our project. We will be building a C/C++ program that uses llama.cpp to perform inference on GGUF LLM models.
Create a new project directory, let's call it smol_chat.
Within the project directory, let's clone the llama.cpp repository into a subdirectory called externals. This will give us access to the llama.cpp source code and headers.
mkdir -p externals
cd externals
git clone https://github.com/georgigerganov/llama.cpp.git
cd ..
Step 2: Configuring CMake
Now, let's configure our project to use CMake. This will allow us to easily compile and link our C/C++ code with the llama.cpp library.
Create a CMakeLists.txt file in the project directory.
In the CMakeLists.txt file, add the following code:
cmake_minimum_required(VERSION 3.10)
project(smol_chat)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(smol_chat main.cpp)
target_include_directories(smol_chat PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(smol_chat llama.cpp)
This code specifies the minimum CMake version, sets the C++ standard and standard flag, adds an executable named smol_chat, includes headers from the current source directory, and links the llama.cpp shared library to our executable.
Step 3: Defining the LLM Interface
Next, let's define a C++ class that will handle the high-level interactions with the LLM. This class will abstract away the low-level llama.cpp function calls and provide a convenient interface for performing inference.
In the project directory, create a header file called LLMInference.h.
In LLMInference.h, declare the following class:
class LLMInference {
public:
LLMInference(const std::string& model_path);
~LLMInference();
void startCompletion(const std::string& query);
std::string completeNext();
private:
llama_model llama_model_;
llama_context llama_context_;
llama_sampler llama_sampler_;
std::vector
std::vector
std::vector
llama_batch batch_;
};
This class has a public constructor that takes the path to the GGUF LLM model as an argument and a destructor that deallocates any dynamically-allocated objects. It also has two public member functions: startCompletion, which initiates the completion process for a given query, and completeNext, which fetches the next token in the LLM's response sequence.
Step 4: Implementing LLM Inference Functions
Now, let's define the implementation for the LLMInference class in a file called LLMInference.cpp.
In LLMInference.cpp, include the necessary headers and implement the class methods as follows:
#include "LLMInference.h"
#include "common.h"
#include
#include
#include
LLMInference::LLMInference(const std::string& model_path) {
llama_load_model_from_file(&llama_model_, model_path.c_str(), llama_model_default_params());
llama_new_context_with_model(&llama_context_, &llama_model_);
llama_sampler_init_temp(&llama_sampler_, 0.8f);
llama_sampler_init_min_p(&llama_sampler_, 0.0f);
}
LLMInference::~LLMInference() {
for (auto& msg : _messages) {
std::free(msg.content);
}
llama_free_model(&llama_model_);
llama_free_context(&llama_context_);
}
void LLMInference::startCompletion(const std::string& query)
Clause de non-responsabilité:info@kdj.com
Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!
Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.
-
- Naviguer dans le labyrinthe de l'éthique, de la prise de décision et des processus de réflexion de l'IA : une dépêche à New York
- Oct 15, 2026 at 04:05 pm
- Alors que les agents d’IA acquièrent une autonomie sans précédent, une question urgente se pose : comment garantir leur prise de décision éthique ? Des incidents et des rapports récents révèlent le besoin urgent d'une surveillance humaine robuste et d'une réévaluation des « processus de pensée » de l'IA pour prévenir les comportements stratégiques involontaires.
-
- Le saut audacieux de Starknet : envisager l'indépendance de la couche 1 et la cryptographie résistante aux quantiques d'ici 2027
- Oct 15, 2026 at 07:55 am
- Starknet explore un changement monumental vers une blockchain indépendante de couche 1, avec un objectif futuriste pour 2027 pour une cryptographie à résistance quantique, marquant une évolution significative dans ses ambitions architecturales.
-
- Strive Asset Management accélère sa stratégie d'acquisition de Bitcoin, renforçant ainsi les avoirs du Trésor
- Oct 15, 2026 at 07:55 am
- Strive Asset Management réalise son plus gros achat de Bitcoin à ce jour, signalant une stratégie de trésorerie agressive et élargissant ses réserves d'actifs numériques.
-
- Solana approfondit son engagement sur le marché chinois avec son bureau de Shanghai et accélère sa tournée
- Oct 15, 2026 at 04:05 am
- Solana fait une percée significative sur le marché chinois, en lançant sa tournée Accelerate et en mettant en avant son nouveau bureau de Shanghai pour favoriser la croissance de la communauté technologique.
-
- Prix du Bitcoin aujourd'hui, Whale déplace 377,6 millions de dollars, acheteurs de Pepeto : Early Bird attrape le ver crypto
- Oct 15, 2026 at 04:05 am
- Le prix du Bitcoin se stabilise, le mouvement massif de 377,6 millions de dollars d'une baleine met en évidence un hodling à long terme, et Pepeto apparaît comme une opportunité précoce pour ceux qui envisagent des gains substantiels.
-
- Prévision du prix de l'argent, analyste de l'argent, tendances du marché de l'argent : les experts se divisent sur la prochaine étape du métal
- Oct 15, 2026 at 04:05 am
- Au milieu des fluctuations des prix de l'argent, les analystes proposent des prévisions divergentes : certains prévoient un plancher à 50 dollars, tandis que d'autres projettent une hausse spectaculaire jusqu'à 1 100 dollars d'ici 2030, soulignant la nature dynamique des tendances du marché de l'argent.
-
- CryptoQuant Insights : « Uptober » prépare-t-il un optimisme prudent pour Bitcoin ?
- Oct 15, 2026 at 04:05 am
- La dernière analyse de CryptoQuant suggère que Bitcoin forme un creux local, en raison de la diminution des réserves de change, de la stabilité des stocks de baleines et de l'amélioration des signaux de demande, ce qui laisse présager un optimisme prudent pour « Uptober ».
-
- Naviguer dans la tempête : marchés des crypto-monnaies, rapport sur l'inflation et performances de l'Altcoin sous le microscope
- Oct 15, 2026 at 12:05 am
- Au milieu d'un rapport sur l'inflation brûlant et d'un changement de politique de la Fed, la performance de l'altcoin est en jeu, la liquidité et le sentiment des investisseurs dictant l'avenir immédiat des actifs numériques.
-
- Analyse des prix du BNB : naviguer dans les niveaux de support au milieu de la forte augmentation de l'activité de la chaîne BNB
- Oct 15, 2026 at 12:05 am
- BNB fait face à des niveaux de support clés alors que BNB Chain connaît un boom des lancements de jetons. L'analyse révèle les mouvements potentiels de prix et les tendances du réseau.

































