public void readZipFile(String file) {
FileWriterWithEncoding writer=null;
try {
writer=new FileWriterWithEncoding(new File("/home/www/test1/gz/zipfile.txt"),"utf-8",true);
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String fileName = "";
try {
ZipFile zf = new ZipFile(new File(file));
long timestamp = 0;
LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();
final int maxsize = 10;
ExecutorService executor = new ThreadPoolExecutor(maxsize, maxsize, 0l, TimeUnit.MILLISECONDS, queue);
for (Enumeration<?> entries = zf.getEntries(); entries.hasMoreElements();) {
ZipEntry ze = ((ZipEntry) entries.nextElement());
if (ze.isDirectory()) {
} else {
fileName = ze.getName();
long size = ze.getSize();
timestamp = ze.getTime();
System.err.println("fileName>>"+fileName);
if (size > 0 ) {
BufferedReader br = new BufferedReader(new InputStreamReader(zf.getInputStream(ze), "utf-8"));
String line;
// sohu_地域_电视剧-日本_563.txt
// media_taggroup_tagname_tagId.txt
String[] names = fileName.split("_");
while ((line = br.readLine()) != null) {
//System.out.println(fileName + "--zip>>>" + line);
writer.write(line);
while (queue.size() >= maxsize) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
Log.OutException(e);
}
}
Callable<String> worker = new MyCallable(id, tagid, media, album, chanel, video, tagname,
timestamp);//此处为线程类
executor.submit(worker);
// list.add(submit);
}
updataFileStatus(fileName, file, 1);
br.close();
}
}
}
executor.shutdown();
try {
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);
} catch (InterruptedException e) {
Log.OutException(e);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
updataFileStatus(fileName, file, 0);
e1.printStackTrace();
}
}
本周接到一个活让读取linux服务器上大文件,按行读取后再拆分放入Redis中。由于是大文件,想考虑到效率的问题,计划是想使用多线程读取,但是查资料,读取文件I/O的效率只跟磁盘有关,故多线程无效,但是考虑到I/O太多会死,故还是使用了线程池,当线程大于某一个值时,停一会,在读取。
1、首先是读取zip压缩文件
由于直接使用jdk的java.util.zip.ZipFile以及java.util.zip.ZipEntry读取时,可能由于服务器上zip压缩文件的编码问题,导致读取失败。故使用了第三方jar包ant.jar
卓越扩展性:能够支持训练拥有数千亿参数的模型,并在多节点多 GPU 系统上展现出卓越的扩展性。因此,即使是一个拥有 130 亿参数的模型,也只需 1.25 小时就能完成训练。而对于拥1750亿参数的模型,使用Deep Speed Chat进行训练也只需不到一天的时间。
注意:在Azure上训练时由于GPU不同,所以训练时间和费用也各不相同。
全民ChatGPT时代来了
做个不太恰当的比喻,微软此次开源Deep Speed Chat就像当年的互联网,为了提升发展速率降低了台式机的价格,使得普通用户也能拥有自己的电脑。
只有参与的用户多了,整个行业生态才能快速壮大发展,所以,微软此次开源对整个ChatGPT生态发展起到了至关重要的推动作用,使得人人都能拥有自己的ChatGPT。
目前,ChatGPT处于初级发展阶段,存在安全隐患、数据隐私、道德等问题。相信随着参与用户的增多,这些难题将会被有效的解决,从而为全球经济发展做出贡
卓越扩展性:能够支持训练拥有数千亿参数的模型,并在多节点多 GPU 系统上展现出卓越的扩展性。因此,即使是一个拥有 130 亿参数的模型,也只需 1.25 小时就能完成训练。而对于拥1750亿参数的模型,使用Deep Speed Chat进行训练也只需不到一天的时间。
注意:在Azure上训练时由于GPU不同,所以训练时间和费用也各不相同。
全民ChatGPT时代来了
做个不太恰当的比喻,微软此次开源Deep Speed Chat就像当年的互联网,为了提升发展速率降低了台式机的价格,使得普通用户也能拥有自己的电脑。
只有参与的用户多了,整个行业生态才能快速壮大发展,所以,微软此次开源对整个ChatGPT生态发展起到了至关重要的推动作用,使得人人都能拥有自己的ChatGPT。
目前,ChatGPT处于初级发展阶段,存在安全隐患、数据隐私、道德等问题。相信随着参与用户的增多,这些难题将会被有效的解决,从而为全球经济发展做出贡