アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

Failed to import transformers.trainer because of the following error の解決方法

huggingfaceのtransformersを使っていたら、急に「Failed to import transformers.trainer because of the following error」というエラーが発生した。対応方法がなかなか見つからなかったので記事に残しておく。 環境 Windows 11 Home + WSL2 + Ubuntu-20.0…

Docker Desktop for Windowsに外部からアクセスできるようにする

Docker Desktop for WindowsでNginxを建てて、そのNginxにLAN内のほかのPCからアクセスする方法。 Windows Firewallに対して80番ポート(Nginxをホスト側の80番ポートにフォワードしてる場合だが)を開ける。 他のブログなどで書かれているのは大体ここまで。…

Windows 11 + RTX2080TiでのDeepLearning環境メモ

nvidia driverを最新版にしたり、cuDNNの公開鍵が無効になったため、cudaを入れなおしたりなどしていたらpytorchからGPUが認識できなくなってしまった(泣 環境を再構築したので、cudaやdriver versionなどをメモとして残しておく。 cudaとNvidiaのdriver及…

Windowsで回線速度を定期的に測定する

最近はネットワークやルータ周りにも興味が出てきて勉強中。勉強のためにルータを直接いじりたいけど、業務用は少し高いのでASUSのルータ RT-AX3000を購入したところ、これはtransixに対応していないのでPPPoEで接続するように変更した。 PPPoEだと速度が遅…

BlockのgasLimitとgasUsedの関係とマイナーの戦略

www.youtube.com僕もよく拝見している、やさしいDeFiチャンネルの「やさしいEthereumガスの解説&きびしいEIP1559猛勉強」の動画内でこんな疑問があがっていた。「マイナーはUsedGasを見てBlockに含めるTransactionを決定しているのか?」この辺りは自分も明…

cudaのGPG Keyが無効になってたので綺麗?に削除してみた

久々にMyPCで機械学習を動かそうとしたら、cuda周りでエラーが発生した。nvidiaのドライバーも新しくしたので、入れなおそうと思ってupdateしたけど、GPG key周りでエラーが発生してうまくアップデートができなかった。なので、まずは古いcuda関連のライブラ…

Attestation

今回はBeaconChainのAttestationについて学んだことを整理するために記事にする。 なお、Attestationの仕様については基本的に以下の公式のspecを参照した。 github.com 基礎知識 Attestationとは Attestationの構造 AttestationDataの構造 Attestationが有…

TapyrusのTestnet nodeをECS + Fargate で立てる

最近は業務でTapyrusを用いたweb3システムの設計開発リードを行ってます。が、主に上流工程とマネージメントがメインで開発はチームメンバーに任せっきりです。 ということで、久々にTapyrusの環境構築を行ってみたので、その内容を整理して記事にします。 …

Windows 11 + Prysm + Geth でPraterテストネットと同期する

今更ながらの記事になりますが、今回はWindows 11上でPrysmとGethを利用してBeacon Chainのテストネットである、Praterテストネットの環境を構築する手順を紹介する。今回記事に整理する経緯としては、2022/06/09の01:00ごろに無事にRopstenがThe Mergeに移…

infura.ioを使ってBeacon Chain(ETH2.0)からBlockの情報を取得する

今回はBeacon Chainのblock情報をinfura.ioを使って取得する方法について記事にする。twitterで話題になっている、reorgについて何が起きてるのかを調べるためにblockの情報を見てみたいなぁと思ったのがきっかけである。The Ethereum beacon chain experien…

Docker環境でnltk.Treeグラフをpngとして出力する

今回も機械学習関連の記事である。 nltk.TreeのデータをPNG画像として出力したかったのですが、Docker環境で開発を行なっていた関係でちょっと手こずってしまった。 Docker環境でPNGを出力させる方法がなかなか見つからなかったので、記事としてまとめておく…

Attention Flowを追実験したい

最近は自然言語学習モデルのBERTを活用した実験を行っている。その中で、Attentionで何が表現されているのか?について興味が出てきた。 とあるツテから以下の論文を紹介してもらったので、この論文の中に出てきているサンプルコードを動かしたいというのが…

HugginfaceのTrainerでTensorboard用のログを出力する

今回もDeepLearningについての記事です。 HuggingfaceのTrainerで学習させたときに、学習途中のログをTensorboard用に出力する方法についてまとめます。huggingface.co Tensorboardのログ出力設定 Tensorboardのログを出力するために必要なライブラリ コマン…

BERTのpre-trainingをやってみた 〜雑記〜

今回は深層学習の自然言語モデルである、BERTについて色々触っていたのでその記録を簡単にまとめたいと思う。 ひょんなことから、BERTの事前学習からやらなければならなかったので、実際に用いたライブラリや環境、学習に必要な時間などについて書いていく。…

Windows 10 Home 21H2 + WSL2 + Ubuntu 20.04LTS環境にcudaをインストールする

最近、機械学習をいろいろと触っている。その関係で家のゲーミングPCに機械学習の環境を構築はしたけど、知識不足でcuda(GPUを使うやつ)環境はインストールできていない。 以前に導入を試みた際は、Windows 10ではcuda on WSL2が正式サポートされておらず、W…

google公式のBERTを2021年の最近の環境で動かしてみる

vasteelab.com の記事を参考に、BERTの事前学習を動かしてみたときの備忘録をまとめる。2021年12月現在では、tensorflowのバージョンが上がっていたりなどで、記事に書いてある手順通りではうまく動かなかった。自分が行った修正内容などを共有する目的で整…

go-ethereumのGraphQLを利用する

前回の記事から引き続きgo-ethereumから大量データを取得するために、今回はGraphQLを用いる方法について試したことをまとめる。なお、前回の記事は以下を参照。 y-nakajo.hatenablog.com go-ethereumのGraphQLについて go-ethereumのGraphQLサーバを起動す…

go-ethereumのLevelDBを直接読む

ethereumのデータを分析する場合、大量のBlockHeaderやTransaction、Receiptを取得する必要がある。これらの膨大なデータをHTTPを介してJSON-RPCで取得しようとするとかなりの時間を要することとなる。 そのため、今回は大量データ処理をするために直接go-et…

go-ethereumのpruningを試してみた

今回は、go-ethereumのv1.10から追加されたコマンドである、`go-ethereum snapshot prune-state`を試してみたのでその結果を共有する記事となる。 このコマンドは、go-ethereumのfull nodeを維持すると溜まっていってしまうstate trieのゴミデータを削除(枝…

gethのsyncingについてのソース解析メモ その3

今回はgethのsyncingの全体的な処理の流れについてまとめる。前回のまでの記事はこちら。 その1 その2 syncの開始 remote peerのhandshakeとpeerSetへの登録 fetching処理 fetchHeadersについて idle peerとtask queueとprocessHeaders peerの取得 request…

gethのsyncingについてのソース解析メモ その2

前回の続きとして、今回は特にReceiptsの取得処理周りを見ていく。Receiptの取得処理はfast syncの時に呼ばれ、full syncでは呼ばれないというコメントがあるが、そこの動きがよくわかっていないので、該当コードがどうなっているかを解析する。 ReceiptsPac…

gethのsyncingについてのソース解析メモ その1

Ethereumのfull/fast/snap syncの違いについてより詳しく調べいたと思い、gethのソースを読み始めた。 が、なかなかにボリュームがあるのと、同期処理についてかなり複雑だったので、頭の整理のために解析中の内容をメモとして残しておく。 full/fast syncの…

Apollo Client(React)のGetting Startedを動かすまで

つい最近、社内ハッカソンでGraphQLのライブラリである、ApolloのApollo Client(React版)を触ってみた。その時に、公式のGetting Startedを動かすのに少し手間取ったので、ここに手順をまとめておく。 最後に、GraphQLを触ってみたときの所感を簡単にまとめ…

StreamによるState管理のすすめ

つい最近、社内ハッカソンでFlutterを用いたアプリ開発を行いました。その時に、FlutterやReactなどにおける、State ManagementやApplication Architecture(というか設計手法?)について色々と議論しました。その中で、Flutterでよく使われているBlocパター…

truffleでminer.stopなテストの書き方

Truffleでちょっと特殊(?)なテストを書こうとしたら思ったよりもハマってしまったので、備忘録的に残しておきます。 miner.stopしたら動かないテスト miner.stopするとsendTransactionでフリーズする理由 miner.stopでフリーズしないテスト まとめ

Solidity v0.6.5で追加されたImmutable keywordについて

今回は、Solidityのv0.6.5で追加されたImmutable keywordについて紹介します。 なお、v0.6.5は2020/04/06にリリースされております。執筆時点での最新バージョンはv0.6.8となっています。Immutable keywordについての公式の説明はこちらのブログを参照くださ…

web3.jsのmock方法

今回の記事では、DappsのUnit Testでweb3.jsをmockする方法について紹介します。 sinon.jsを用いた方法と、jestを用いた方法の2パターンを紹介します。本記事で紹介している内容のサンプルプロジェクトも作りましたので参考にしてください。 github.com テス…

Meta-Transactionのセキュリティを向上させるEIP-1344

今回はIstanbulアップデートで導入されたEIP-1344についてまとめたいと思います。EIP-1344の説明をする前にMeta-Transactionの仕組みとMeta-Transactionが抱える問題を簡単に説明します。その後に、EIP-1344で何が解決されたのかを説明します。EIPの原文はこ…

RLPとMerkle Patricia Tree(Trie)

今回はEthereumで用いられている2つのデータエンコード方式、RLP(Recursive Length Prefix)とPatricia Tree(Trie)について説明します。 RLP(Recursive Length Prefix) 概要 接頭辞の種別 例 具体的な使用例 Merkle Patricia Tree(Trie) 概要 前提:基本的な…

Devcon5 - Day 3 Rough Report

1. Optimization techniques for EVM implementations 2. (e)WASM Code Golfing - Below Par with Nim 3. Yul, eWasm, Solidity: Progress and Future Plans 4. Wasm Precompiles for Eth 1.x 5. EVM Roundtable: Everything You Wanted to Ask, But Were Af…