返回
机器学习参数服务器ps-lite(4) 应用层、通信、基础支撑、基类
人工智能
2023-09-23 21:17:45
简介
参数服务器ps-lite是一个高效的分布式深度学习训练系统,它可以帮助您在GPU集群上训练大型模型。本文是ps-lite的第四篇,介绍了KVWorker和KVServer这两个重要的组件。
基础支撑类
KVWorker和KVServer都是基于SimpleApp构建的。SimpleApp是一个非常简单的类,它只提供了一些基本的功能,比如初始化、启动和停止。
class SimpleApp {
public:
explicit SimpleApp(bool as_daemon) : as_daemon_(as_daemon) {}
virtual ~SimpleApp() = default;
virtual bool Init() = 0;
virtual void Start() = 0;
virtual void Stop() { running_.store(false); }
virtual bool IsRunning() const { return running_.load(); }
virtual bool IsAsDaemon() const { return as_daemon_; }
private:
std::atomic<bool> running_{false};
bool as_daemon_;
};
基类
KVWorker和KVServer都继承自基类SimpleApp。SimpleApp提供了基本的功能,KVWorker和KVServer只需要实现自己的Init()和Start()函数即可。
class KVWorker : public SimpleApp {
public:
explicit KVWorker(const std::string& addr) : SimpleApp(true), addr_(addr) {}
virtual ~KVWorker() = default;
virtual bool Init() override;
virtual void Start() override;
private:
std::string addr_;
};
class KVServer : public SimpleApp {
public:
explicit KVServer(const std::string& addr) : SimpleApp(true), addr_(addr) {}
virtual ~KVServer() = default;
virtual bool Init() override;
virtual void Start() override;
private:
std::string addr_;
};
KVWorker
KVWorker是参数服务器的客户端。它可以向参数服务器请求参数,也可以将梯度发送给参数服务器。
bool KVWorker::Init() {
kv_worker_.reset(new KVWorkerImpl(addr_));
return kv_worker_->Init();
}
void KVWorker::Start() {
kv_worker_->Start();
while (IsRunning()) {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
KVServer
KVServer是参数服务器的服务器端。它可以接收参数请求,也可以接收梯度。
bool KVServer::Init() {
kv_server_.reset(new KVServerImpl(addr_));
return kv_server_->Init();
}
void KVServer::Start() {
kv_server_->Start();
while (IsRunning()) {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
总结
本文介绍了参数服务器ps-lite的KVWorker和KVServer两个组件。这些组件是参数服务器的基础,它们提供了基本的功能,比如初始化、启动和停止。