Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
b139280
[add] main_llm_tokenizer experiment
dianjixz Nov 19, 2024
ab093b6
[format] new clang-format
dianjixz Nov 20, 2024
a5b6935
[fix] llm_task_channel_ not erase
dianjixz Nov 21, 2024
b49fe25
[fix] Circular reference error
dianjixz Nov 21, 2024
b192997
[fix] llm_task_channel_ resource release
dianjixz Nov 21, 2024
82b580e
[update] audio setup && fix StackFlow sys_sql_unset
dianjixz Nov 22, 2024
0ceff54
[update] change StackFlow component msg
dianjixz Nov 22, 2024
814c91f
[update] sys.reset
dianjixz Nov 22, 2024
a0b6082
[update] cv support yolo.
Abandon-ht Nov 22, 2024
4937e36
[add] ax-samples
dianjixz Nov 22, 2024
a02304c
[change] cv to yolo
dianjixz Nov 22, 2024
a4ab2ac
[clean] code
dianjixz Nov 22, 2024
011a961
[update] yolo output class_name.
Abandon-ht Nov 22, 2024
ee21a23
[update] add error msg
dianjixz Nov 22, 2024
d3521b0
Merge branch 'dev' of github.com:m5stack/StackFlow into dev
dianjixz Nov 22, 2024
06194f0
[update] SDK
dianjixz Nov 25, 2024
93b69a8
[update] supports seg & pose model.
Abandon-ht Nov 26, 2024
ebdcfe9
[super update]
dianjixz Nov 26, 2024
88b585b
Merge branch 'dev' of github.com:m5stack/StackFlow into dev
dianjixz Nov 26, 2024
1253d7d
[fix] sys.reset error
dianjixz Nov 26, 2024
6881a5a
[fix] decode_stream
dianjixz Nov 26, 2024
225ab5b
[update] StackFlow subscriber_event_call decode_stream,delet simdjson…
dianjixz Nov 26, 2024
394640c
[update]
dianjixz Nov 27, 2024
689d507
[fix] serial_com error
dianjixz Nov 27, 2024
1a9971d
[fix] Run the error individually.
dianjixz Nov 27, 2024
f5e81ca
[update] pzmq close && base64 size
dianjixz Nov 27, 2024
d2747b8
[update] yolo11s to yolo11n
Abandon-ht Nov 28, 2024
234cc58
[update] fix confidence
Abandon-ht Nov 28, 2024
8ec0be8
[update] add llm_skel(Temporary version)
Abandon-ht Nov 28, 2024
f649b92
[update] add llm_camera!
dianjixz Nov 29, 2024
046b753
Merge branch 'dev' of github.com:m5stack/StackFlow into dev
dianjixz Nov 30, 2024
bc70332
[update]
dianjixz Dec 2, 2024
fb8feab
[update] StackFlow add default serial_zmq_url
dianjixz Dec 2, 2024
71fe7f2
[update] fix melotts english generate.
Abandon-ht Dec 2, 2024
ce0d88a
[update] fix config path.
Abandon-ht Dec 3, 2024
c2bf248
[update] pack deb
dianjixz Dec 3, 2024
2bb50d5
Merge branch 'dev' of github.com:m5stack/StackFlow into dev
dianjixz Dec 3, 2024
9f8115c
[fix] tts input msg escape
dianjixz Dec 3, 2024
69c9de4
[update] add yolo package.
Abandon-ht Dec 3, 2024
6cb8075
[update] yolo
dianjixz Dec 3, 2024
b3915bf
Merge branch 'dev' of github.com:m5stack/StackFlow into dev
dianjixz Dec 3, 2024
c91d0f9
[update] down play audio
dianjixz Dec 3, 2024
a399667
[update] add qwen2.5-coder, llama3.2-1B, openbuddy-llama3.2. rename j…
Abandon-ht Dec 3, 2024
88fdc64
[update] add vlm internvl2. rename json name.
Abandon-ht Dec 4, 2024
aea8f17
[update] llm_pack.py add vlm internvl2.
Abandon-ht Dec 4, 2024
23d2adc
[update] llm-camera
dianjixz Dec 4, 2024
e2f8967
[update] yolo doc
dianjixz Dec 4, 2024
422ed2f
[update] format code. sys add rmmode method.
Abandon-ht Dec 11, 2024
13c4102
[update] ax_msp
dianjixz Dec 12, 2024
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[fix] Circular reference error
  • Loading branch information
dianjixz committed Nov 21, 2024
commit b49fe252e15c1dca8b76ea8ea2ec37e016f30f3b
29 changes: 21 additions & 8 deletions projects/llm_framework/main/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,14 @@ class llm_llm : public StackFlow {
task_count_ = 1;
}

void task_output(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel,
const std::string &data, bool finish)
void task_output(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &data, bool finish)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
if (llm_channel->enstream_) {
static int count = 0;
nlohmann::json data_body;
Expand All @@ -109,10 +114,15 @@ class llm_llm : public StackFlow {
}
}

void task_user_data(const std::shared_ptr<llm_task> llm_task_obj,
const std::shared_ptr<llm_channel_obj> llm_channel, const std::string &object,
void task_user_data(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &object,
const std::string &data)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
const std::string *next_data = &data;
int ret;
std::string tmp_msg1;
Expand Down Expand Up @@ -157,10 +167,13 @@ class llm_llm : public StackFlow {
if (ret == 0) {
llm_channel->set_output(llm_task_obj->enoutput_);
llm_channel->set_stream(llm_task_obj->enstream_);
llm_task_obj->set_output(std::bind(&llm_llm::task_output, this, llm_task_obj, llm_channel,
std::placeholders::_1, std::placeholders::_2));
llm_channel->subscriber_work_id("", std::bind(&llm_llm::task_user_data, this, llm_task_obj, llm_channel,
std::placeholders::_1, std::placeholders::_2));
llm_task_obj->set_output(std::bind(&llm_llm::task_output, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));
llm_channel->subscriber_work_id(
"",
std::bind(&llm_llm::task_user_data, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1, std::placeholders::_2));
llm_task_[work_id_num] = llm_task_obj;
send("None", "None", LLM_NO_ERROR, work_id);
return 0;
Expand Down
55 changes: 40 additions & 15 deletions projects/llm_framework/main_asr/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,9 +292,14 @@ class llm_asr : public StackFlow {
EVENT_TASK_PAUSE, std::bind(&llm_asr::_task_pause, this, std::placeholders::_1, std::placeholders::_2));
}

void task_output(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel,
const std::string &data, bool finish)
void task_output(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &data, bool finish)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
std::string tmp_msg1;
const std::string *next_data = &data;
if (finish) {
Expand Down Expand Up @@ -340,10 +345,15 @@ class llm_asr : public StackFlow {
return 0;
}

void task_user_data(const std::shared_ptr<llm_task> llm_task_obj,
const std::shared_ptr<llm_channel_obj> llm_channel, const std::string &object,
void task_user_data(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &object,
const std::string &data)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
std::string tmp_msg1;
const std::string *next_data = &data;
int ret;
Expand Down Expand Up @@ -398,8 +408,14 @@ class llm_asr : public StackFlow {
event_queue_.enqueue(EVENT_TASK_PAUSE, work_id, "");
}

void task_work(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel)
void task_work(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
llm_task_obj->kws_awake();
if ((!audio_url_.empty()) && (llm_task_obj->audio_flage_ == false)) {
llm_channel->subscriber(audio_url_,
Expand All @@ -408,9 +424,15 @@ class llm_asr : public StackFlow {
}
}

void kws_awake(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel,
const std::string &object, const std::string &data)
void kws_awake(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &object,
const std::string &data)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
std::this_thread::sleep_for(std::chrono::milliseconds(llm_task_obj->awake_delay_));
task_work(llm_task_obj, llm_channel);
}
Expand Down Expand Up @@ -476,10 +498,9 @@ class llm_asr : public StackFlow {
llm_channel->set_output(llm_task_obj->enoutput_);
llm_channel->set_stream(llm_task_obj->enstream_);
llm_task_obj->pause = std::bind(&llm_asr::task_pause, this, work_id, "");
SLOGI("llm_task_obj->enoutput_:%d", llm_task_obj->enoutput_);
SLOGI("llm_task_obj->enstream_:%d", llm_task_obj->enstream_);
llm_task_obj->set_output(std::bind(&llm_asr::task_output, this, llm_task_obj, llm_channel,
std::placeholders::_1, std::placeholders::_2));
llm_task_obj->set_output(std::bind(&llm_asr::task_output, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));

for (const auto input : llm_task_obj->inputs_) {
if (input.find("sys") != std::string::npos) {
Expand All @@ -489,13 +510,15 @@ class llm_asr : public StackFlow {
llm_task_obj->audio_flage_ = true;
} else if (input.find("asr") != std::string::npos) {
llm_channel->subscriber_work_id(
"", std::bind(&llm_asr::task_user_data, this, llm_task_obj, llm_channel, std::placeholders::_1,
"", std::bind(&llm_asr::task_user_data, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));
} else if (input.find("kws") != std::string::npos) {
llm_task_obj->ensleep_ = true;
task_pause(work_id, "");
llm_channel->subscriber_work_id(
input, std::bind(&llm_asr::kws_awake, this, llm_task_obj, llm_channel, std::placeholders::_1,
input, std::bind(&llm_asr::kws_awake, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));
}
}
Expand Down Expand Up @@ -534,8 +557,10 @@ class llm_asr : public StackFlow {
llm_task_obj->inputs_.push_back(data);
} else if (data.find("kws") != std::string::npos) {
llm_task_obj->ensleep_ = true;
ret = llm_channel->subscriber_work_id(data, std::bind(&llm_asr::kws_awake, this, llm_task_obj, llm_channel,
std::placeholders::_1, std::placeholders::_2));
ret = llm_channel->subscriber_work_id(
data,
std::bind(&llm_asr::kws_awake, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1, std::placeholders::_2));
llm_task_obj->inputs_.push_back(data);
}
if (ret) {
Expand Down
28 changes: 23 additions & 5 deletions projects/llm_framework/main_kws/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,16 +314,28 @@ class llm_kws : public StackFlow {
}
}

void task_pause(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel)
void task_pause(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
if (llm_task_obj->audio_flage_) {
if (!audio_url_.empty()) llm_channel->stop_subscriber(audio_url_);
llm_task_obj->audio_flage_ = false;
}
}

void task_work(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel)
void task_work(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
if ((!audio_url_.empty()) && (llm_task_obj->audio_flage_ == false)) {
llm_channel->subscriber(audio_url_,
std::bind(&llm_task::sys_pcm_on_data, llm_task_obj.get(), std::placeholders::_1));
Expand Down Expand Up @@ -363,10 +375,15 @@ class llm_kws : public StackFlow {
send("None", "None", LLM_NO_ERROR, work_id);
}

void task_user_data(const std::shared_ptr<llm_task> llm_task_obj,
const std::shared_ptr<llm_channel_obj> llm_channel, const std::string &object,
void task_user_data(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &object,
const std::string &data)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
std::string tmp_msg1;
const std::string *next_data = &data;
int ret;
Expand Down Expand Up @@ -426,7 +443,8 @@ class llm_kws : public StackFlow {
llm_task_obj->audio_flage_ = true;
} else if (input.find("kws") != std::string::npos) {
llm_channel->subscriber_work_id(
"", std::bind(&llm_kws::task_user_data, this, llm_task_obj, llm_channel, std::placeholders::_1,
"", std::bind(&llm_kws::task_user_data, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));
}
}
Expand Down
76 changes: 56 additions & 20 deletions projects/llm_framework/main_llm/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,11 @@ class llm_task {
}
};
lLaMa_ = std::make_unique<LLM>();
if (!lLaMa_->Init(mode_config_)) return -2;
if (!lLaMa_->Init(mode_config_)) {
lLaMa_->Deinit();
lLaMa_.reset();
return -2;
}

} catch (...) {
SLOGE("config false");
Expand Down Expand Up @@ -216,6 +220,9 @@ class llm_task {

~llm_task()
{
if (lLaMa_) {
lLaMa_->Deinit();
}
}
};

Expand Down Expand Up @@ -248,9 +255,14 @@ class llm_llm : public StackFlow {
repeat_event(1000, std::bind(&llm_llm::_load_config, this));
}

void task_output(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel,
const std::string &data, bool finish)
void task_output(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &data, bool finish)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
SLOGI("send:%s", data.c_str());
if (llm_channel->enstream_) {
static int count = 0;
Expand All @@ -271,10 +283,15 @@ class llm_llm : public StackFlow {
}
}

void task_user_data(const std::shared_ptr<llm_task> llm_task_obj,
const std::shared_ptr<llm_channel_obj> llm_channel, const std::string &object,
void task_user_data(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &object,
const std::string &data)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
const std::string *next_data = &data;
int ret;
std::string tmp_msg1;
Expand All @@ -294,9 +311,15 @@ class llm_llm : public StackFlow {
llm_task_obj->inference((*next_data));
}

void task_asr_data(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel,
const std::string &object, const std::string &data)
void task_asr_data(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &object,
const std::string &data)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
if (object.find("stream") != std::string::npos) {
if (sample_json_str_get(data, "finish") == "true") {
llm_task_obj->inference(sample_json_str_get(data, "delta"));
Expand All @@ -306,9 +329,15 @@ class llm_llm : public StackFlow {
}
}

void kws_awake(const std::shared_ptr<llm_task> llm_task_obj, const std::shared_ptr<llm_channel_obj> llm_channel,
const std::string &object, const std::string &data)
void kws_awake(const std::weak_ptr<llm_task> llm_task_obj_weak,
const std::weak_ptr<llm_channel_obj> llm_channel_weak, const std::string &object,
const std::string &data)
{
auto llm_task_obj = llm_task_obj_weak.lock();
auto llm_channel = llm_channel_weak.lock();
if (!(llm_task_obj && llm_channel)) {
return;
}
llm_task_obj->lLaMa_->Stop();
}

Expand Down Expand Up @@ -341,21 +370,25 @@ class llm_llm : public StackFlow {
llm_channel->set_output(llm_task_obj->enoutput_);
llm_channel->set_stream(llm_task_obj->enstream_);

llm_task_obj->set_output(std::bind(&llm_llm::task_output, this, llm_task_obj, llm_channel,
std::placeholders::_1, std::placeholders::_2));
llm_task_obj->set_output(std::bind(&llm_llm::task_output, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));

for (const auto input : llm_task_obj->inputs_) {
if (input.find("llm") != std::string::npos) {
llm_channel->subscriber_work_id(
"", std::bind(&llm_llm::task_user_data, this, llm_task_obj, llm_channel, std::placeholders::_1,
"", std::bind(&llm_llm::task_user_data, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));
} else if (input.find("asr") != std::string::npos) {
llm_channel->subscriber_work_id(input,
std::bind(&llm_llm::task_asr_data, this, llm_task_obj, llm_channel,
std::placeholders::_1, std::placeholders::_2));
llm_channel->subscriber_work_id(
input, std::bind(&llm_llm::task_asr_data, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));
} else if (input.find("kws") != std::string::npos) {
llm_channel->subscriber_work_id(
input, std::bind(&llm_llm::kws_awake, this, llm_task_obj, llm_channel, std::placeholders::_1,
input, std::bind(&llm_llm::kws_awake, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1,
std::placeholders::_2));
}
}
Expand Down Expand Up @@ -388,12 +421,15 @@ class llm_llm : public StackFlow {
auto llm_task_obj = llm_task_[work_id_num];
if (data.find("asr") != std::string::npos) {
ret = llm_channel->subscriber_work_id(
data, std::bind(&llm_llm::task_asr_data, this, llm_task_obj, llm_channel, std::placeholders::_1,
std::placeholders::_2));
data,
std::bind(&llm_llm::task_asr_data, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1, std::placeholders::_2));
llm_task_obj->inputs_.push_back(data);
} else if (data.find("kws") != std::string::npos) {
ret = llm_channel->subscriber_work_id(data, std::bind(&llm_llm::kws_awake, this, llm_task_obj, llm_channel,
std::placeholders::_1, std::placeholders::_2));
ret = llm_channel->subscriber_work_id(
data,
std::bind(&llm_llm::kws_awake, this, std::weak_ptr<llm_task>(llm_task_obj),
std::weak_ptr<llm_channel_obj>(llm_channel), std::placeholders::_1, std::placeholders::_2));
llm_task_obj->inputs_.push_back(data);
}
if (ret) {
Expand Down
Loading