|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nachrichtenartikel zu Kryptowährungen
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)
Haftungsausschluss:info@kdj.com
Die bereitgestellten Informationen stellen keine Handelsberatung dar. kdj.com übernimmt keine Verantwortung für Investitionen, die auf der Grundlage der in diesem Artikel bereitgestellten Informationen getätigt werden. Kryptowährungen sind sehr volatil und es wird dringend empfohlen, nach gründlicher Recherche mit Vorsicht zu investieren!
Wenn Sie glauben, dass der auf dieser Website verwendete Inhalt Ihr Urheberrecht verletzt, kontaktieren Sie uns bitte umgehend (info@kdj.com) und wir werden ihn umgehend löschen.
-
- LBank steigert die Markenidentität über den Handel hinaus: Einführung eines ganzheitlichen Krypto-Ökosystems
- Oct 26, 2026 at 11:55 am
- Die LBank definiert ihre Markenidentität neu und geht über den bloßen Handel hinaus, um die expansive Rolle von Krypto in den Bereichen Gaming, Zahlungen und Eigentum zu berücksichtigen.
-
- Keystone-Verstoß: Kundendatenleck löst Sicherheitsbedenken bei Hardware-Wallets aus
- Oct 26, 2026 at 11:55 am
- Der jüngste Datenverstoß von Keystone, bei dem Versandinformationen von Kunden offengelegt wurden, verdeutlicht die zunehmenden Sicherheitsrisiken für Benutzer von Krypto-Hardware-Wallets und wirft kritische Fragen zur Datenaufbewahrung und Benutzersicherheit auf.
-
- Die Politik der Fed belastet den Kryptowährungsmarkt, da der Sektor für digitale Vermögenswerte vor wichtigen Entscheidungen steht
- Oct 26, 2026 at 11:45 am
- Die Erwartung steigt, dass sich die Politik der Federal Reserve ändert und Technologiegewinne erzielt werden, was sich auf den Kryptowährungsmarkt und den Sektor der digitalen Vermögenswerte auswirkt.
-
- Solana Company schließt sich Hongkongs Elite Strategic Enterprises an und stärkt die Web3-Präsenz
- Oct 26, 2026 at 11:35 am
- Die an der Nasdaq notierte Solana Company (HSDT) wurde als strategisches Unternehmen in Hongkong anerkannt, was einen bedeutenden Schritt zur Festigung der Rolle der Stadt als Web3-Hub signalisiert.
-
- KI-Agenten, ETH Glamsterdam Fork und die „Steal My Bitcoin“-Saga: Ein tiefer Einblick in die sich entwickelnde Sicherheitslandschaft von Krypto
- Oct 26, 2026 at 07:55 am
- Beim Glamsterdam-Hard Fork von Ethereum kommt es zu Verzögerungen, während KI-Agenten das Scannen von Schwachstellen revolutionieren und die Website „Steal My Bitcoin“ die Widerstandsfähigkeit von PHP2Shell testet, was die dynamische Sicherheitsentwicklung von Krypto hervorhebt.
-
- Bitcoin bei 80.000 US-Dollar: Krypto-Liquidationen erschüttern den Markt, da die wichtigste Unterstützung (vorerst) anhält
- Oct 26, 2026 at 07:25 am
- Der Tanz von Bitcoin um die 80.000-Dollar-Marke inmitten einer 550-Millionen-Dollar-Krypto-Liquidationswelle hat den Markt erfasst und Fragen zu seiner Widerstandsfähigkeit aufgeworfen.
-
- Verstoß gegen die GMO-Trading-Cloud legt Server offen und verdeutlicht das allgegenwärtige Serverrisiko und Bedenken hinsichtlich Datenschutzverletzungen in Krypto
- Oct 26, 2026 at 07:25 am
- Die Analyse des Verstoßes gegen die GMO Trading Cloud und anderer aktueller Vorfälle zeigt ein erhebliches Serverrisiko und Schwachstellen bei Datenschutzverletzungen im Kryptobereich.
-
- KI-Agenten, ETH Glamsterdam Fork und die „Steal My Bitcoin“-Saga: Eine New Yorker Minute zur Kryptosicherheit
- Oct 26, 2026 at 07:15 am
- KI-Agenten verstärken sich, um Krypto zu sichern, wie die Rettung des ETH-Glamsterdam-Forks zeigt, während die „Steal My Bitcoin“-Herausforderung eine alte Schwachstelle testet und ein dynamisches Zeitalter für die Sicherheit digitaler Vermögenswerte hervorhebt.
-
- Ein Verstoß gegen die GMO Trading Cloud wirft Serverrisikobedenken auf und erinnert an frühere Datenvorfälle
- Oct 26, 2026 at 07:15 am
- Ein schwerwiegendes Serverrisikoereignis bei GMO Trading Cloud, das möglicherweise 26.739 Server betrifft, verdeutlicht die anhaltenden Sicherheitslücken bei Datenschutzverletzungen im Finanztechnologiesektor. Diese Nachricht folgt auf ähnliche Vorfälle und unterstreicht die Notwendigkeit einer robusten Sicherheit.

































