Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如果想在15*15的棋盘上获得较好的结果,不知道pure_mcts和simulation的play out应大概设为多少呢? #13

Closed
huyp182 opened this issue Mar 7, 2018 · 13 comments

Comments

@huyp182
Copy link

huyp182 commented Mar 7, 2018

No description provided.

@huyp182
Copy link
Author

huyp182 commented Mar 7, 2018

还有其他参数还需要修改吗?

@junxiaosong
Copy link
Owner

理论上来说扩大棋盘时目前的play_out次数不用改,另外pure_mcts只是用来作为对照观察训练效果的,和训练过程无关。不过15 * 15的棋盘运算量要求太大了,如果是单机跑的话太慢了,基本是跑不出来的。

@huyp182
Copy link
Author

huyp182 commented Mar 7, 2018

嗯,打算用1080跑十几天。。。谢谢回复!

@huyp182 huyp182 closed this as completed Mar 7, 2018
@junxiaosong junxiaosong reopened this Mar 7, 2018
@junxiaosong
Copy link
Owner

@782832949 ,突然想到棋盘扩大之后dirichlet噪声的参数可能需要调整。根据AlphaZero论文里的描述, 这个参数一般按照反比于每一步的可行move数量设置,所以棋盘扩大之后这个参数可能需要减小。
具体是mcts_alphaZero.py中的197行
p=0.75 * probs + 0.25 * np.random.dirichlet(0.3 * np.ones(len(probs)))
其中的0.3可能减小一些(比如到0.1),会有帮助。不过我也没有实际跑大棋盘的经验,仅供参考。

@huyp182
Copy link
Author

huyp182 commented Mar 14, 2018

谢谢!还有,tensorflow保存的模型文件有.meta,.index,.data-00000-of-00001三个。载入的时候不能直接运行human_play,还要修改一下吧,好像要用tensorflow指定的载入方式?

@huyp182
Copy link
Author

huyp182 commented Mar 14, 2018

1
2
如图,不知道为什么跑到这就卡在这不动了,cpu和磁盘占用都是0,是664的,用的tensorflow。
然后按了一下Ctrl+C就继续跑了。。。

@junxiaosong
Copy link
Owner

@782832949 关于载入tensorflow保存的模型文件,我记得human_play.py里的代码是直接可以运行的,当然model_file = 后面不要写那三个文件名,而是写和train.py里保存时一样的名字,比如'best_policy.model'或者'current_policy.model'就可以了

@BIGBALLON
Copy link
Contributor

BIGBALLON commented Mar 14, 2018

@junxiaosong 提个小建议,建议不要使用pickle来save 和 load model的weight。可以直接用pytorch的内建API。速度快了接近100倍。
(20层的resnet, pickle读取weight大概要20s,torch.load大概是0.2s)
另外我还有做training data 的 save,用的是numpy,速度上面也比pickle快非常多。

image

大概是这样。

 def save_model(self,path):
        torch.save(self.policy_value_net.state_dict(),path)
        print("SAVE MODEL IN: ",path)

    def load_model(self,path):
        self.policy_value_net.load_state_dict(torch.load(path))
        print("LOAD MODEL FROM: ",path)

@huyp182
Copy link
Author

huyp182 commented Mar 15, 2018

谢谢~

@huyp182 huyp182 closed this as completed Mar 15, 2018
@Kelvin-Zhong
Copy link

@BIGBALLON 你的9x9 是训练了多久呢?

@initial-h
Copy link

@BIGBALLON你好
请问怎么把AI连到一个平台上去比较呢,我下了piskvork但是只有python2的模板。python3打包成exe有很多报错,你是连的哪一个呢?

@gmftbyGMFTBY
Copy link

@BIGBALLON 比较关心 9 * 9 的硬件配置和训练的时间大小,谢谢了

@TheColdVoid
Copy link

@BIGBALLON
请问 具体您是怎么实现多线程生成self-play棋局的?用多进程还是多线程?我尝试着写了一下多线程生成self-play棋局的代码,发现由于python的全局锁的缘故,导致不能有效地利用多核资源,但是用多进程的话,又也遇到了一个异常TypeError: can't pickle _thread.RLock objects,这个异常我查了很多资料也没有找到有效的解决方法。因此我想请教一下您是怎么实现的多线程生成selfplay棋局的,谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants